Sorting by Location Information
When setting items on a map, you can use the order_query
to sort the contents based on the distance from a specified location by specifying the sort order and latitude/longitude.
Furthermore, distance information (in kilometers) from the specified location will be added to the response under the item name ext_X_distance
.
Configuration
Sorting with order_query
Specify the sort order and latitude/longitude in the format of identifier=order=latitude:longitude
, and specify it in the endpoint parameter.
Please URL encode the parameter.
Request Example
- order_query=ext_1=DESC=3.1065323937409204:101.58251235994912
Request URL
https://sitekey.g.kuroco.app/rcms-api/1/map_test?order_query=ext_1%3DDESC%3D3.1065323937409204%3A101.58251235994912
Order | Description |
---|---|
DESC | Sort in descending order from the specified latitude/longitude. |
ASC | Sort in ascending order from the specified latitude/longitude. |
None | The distance from the specified latitude and longitude will be included in the additional response, but the order will not be changed. Specify using identifier==latitude:longitude . |
Response Example
{
"list": [
{
"subject": "Tokyo",
"ext_1_distance": "5337.28",
"ext_1": {
"gmap_x": "139.7671248",
"gmap_y": "35.68123620000001",
"gmap_type": "roadmap",
"gmap_zoom": "14",
"gmap_place_id": "ChIJC3Cf2PuLGGAROO00ukl8JwA"
}
},
{
"subject": "Osaka",
"ext_1_distance": "4958.37",
"ext_1": {
"gmap_x": "135.5022535",
"gmap_y": "34.6937249",
"gmap_type": "roadmap",
"gmap_zoom": "10",
"gmap_place_id": "ChIJ4eIGNFXmAGAR5y9q5G7BW8U"
}
},
{
"subject": "Fukuoka",
"ext_1_distance": "4519.57",
"ext_1": {
"gmap_x": "130.4016888",
"gmap_y": "33.5901838",
"gmap_type": "roadmap",
"gmap_zoom": "9",
"gmap_place_id": "ChIJKYSE6aHtQTURg4c5NplyCvY"
}
}
]
}
When you specify order_query
with latitude and longitude, distance information (in km) from the specified location will be added to the response as the ext_X_distance
field.
Combining with Filter Queries
You can create filters in the format of :D(identifier:latitude:longitude) < 500
to search for content based on distance from the specified location.
While you can use Filter queries alone, ext_X_distance
will be calculated based on the position specified in the order_query
.
Even if you apply filters without sorting, it is recommended to combine them with order_query
specified in the format iidentifier==latitude:longitude
.
Request Example
- filter=:D(ext_1:35.17189148918877:136.68933682996803) < 500
- order_query=ext_1=ASC=35.17189148918877:136.68933682996803
Request URL
https://sitekey.g.kuroco.app/rcms-api/1/maptest?filter=%3AD%28ext_1%3A35.17189148918877%3A136.68933682996803%29%20%3C%20200&order_query=ext_1%3DASC%3D35.17189148918877%3A136.68933682996803
Response Example
{
"list": [
{
"subject": "Osaka",
"ext_1_distance": "120.56",
"ext_1": {
"gmap_x": "135.5022535",
"gmap_y": "34.6937249",
"gmap_type": "roadmap",
"gmap_zoom": "10",
"gmap_place_id": "ChIJ4eIGNFXmAGAR5y9q5G7BW8U"
}
}
]
}
You can also combine multiple conditions.
Example: :D(ext_1:35.17189148918877:136.68933682996803) < 200 or :D(ext_1:35.17189148918877:136.68933682996803) > 500
You can set the location information for filter
and order_query
separately, but the distance returned in the ext_X_distance
field will be calculated based on the position specified in the order_query
.
Performance ImprovementRelease version: βversion
When [Indexing] is enabled in the search settings of the content structure, an index is added to map items.
The added index can be utilized under the following conditions, potentially improving performance.
For requests that do not meet these conditions, performance will be equivalent to when "Indexing" is not enabled.
- Sort order must be ascending (indexes are not utilized for descending order)
- OK: ext_1=ASC=35.7008524:139.7435939
- NG: ext_1=DESC=35.7008524:139.7435939
- Only one map item can be specified for sorting (adding sorting conditions for other items prevents the index from being utilized)
- OK: ext_1=ASC=35.7008524:139.7435939
- NG: ext_1=ASC=35.7008524:139.7435939,ext_2=ASC
Support
If you have any other questions, please contact us or check out Our Slack Community.