位置情報による並び替え
地図の項目をコンテンツを設定している場合、order_query
に並び順と緯度経度を指定することで、指定の位置からの距離でコンテンツの並び替えが可能です。
また、指定した位置からの距離情報(km)がext_X_distance
の項目名でレスポンスに追加されます。
設定方法
order_queryによる並び替え
項目の識別子=並び順=緯度:経度
の形式で指定し、エンドポイントのパラメータに指定します。
パラメータはURLエンコードしてください。
リクエスト例
- 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
並び順の指定 | 説明 |
---|---|
DESC | 指定した緯度経度から遠い順に並びます。 |
ASC | 指定した緯度経度から近い順に並びます。 |
なし | 指定した緯度経度からの距離が追加でレスポンスされますが並び順は変更されません。項目の識別子==緯度:経度 で指定します。 |
レスポンス例
{
"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"
}
}
]
}
order_query
を緯度経度で指定すると、指定した位置からの距離情報(km)がext_X_distance
の項目名でレスポンスに追加されます。
Filterクエリとの併用
:D(項目の識別子:緯度:経度) < 500
のような形式でフィルターを作成することで、指定の位置からの距離を条件としたコンテンツの検索が可能です。
Filterクエリのみで利用することも可能ですが、ext_X_distance
はorder_query
に指定した位置をもとに計算されます。
並び替え不要でFilterをかける場合でも項目の識別子==緯度:経度
の形式でパラメータを指定したorder_query
と併用することをお勧めします。
リクエスト例
- 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
レスポンス例
{
"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"
}
}
]
}
複数の条件を結合することも可能です。
例::D(ext_1:35.17189148918877:136.68933682996803) < 200 or :D(ext_1:35.17189148918877:136.68933682996803) > 500
filter
に指定する位置情報と、order_query
に指定する位置情報を別の場所に設定することもできますが、
ext_X_distance
の項目でレスポンスされる距離はorder_query
に指定した位置をもとに計算されます。
パフォーマンスの向上提供版: β版
コンテンツ定義の検索設定で[インデックス付与]を有効にすると、地図項目に対してインデックスが付与されます。
付与されたインデックスは、以下の条件を満たすと活用され、パフォーマンスの向上が期待できます。
条件を満たさないリクエストでは、「インデックス付与」の設定がない場合と同等のパフォーマンスになります。
- 並び順を昇順にする (降順ではインデックスが活用されません)
- OK: ext_1=ASC=35.7008524:139.7435939
- NG: ext_1=DESC=35.7008524:139.7435939
- 並び順に地図項目1つだけを指定する (他の項目の並び順条件を追加したりすると、インデックスが活用されません)
- OK: ext_1=ASC=35.7008524:139.7435939
- NG: ext_1=ASC=35.7008524:139.7435939,ext_2=ASC
サポート
お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Slackコミュニティにご参加ください。