メインコンテンツまでスキップ

位置情報による並び替え

地図の項目をコンテンツを設定している場合、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_distanceorder_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に指定した位置をもとに計算されます。

パフォーマンスの向上提供版: β

コンテンツ定義の検索設定で[インデックス付与]を有効にすると、地図項目に対してインデックスが付与されます。

Image from Gyazo

付与されたインデックスは、以下の条件を満たすと活用され、パフォーマンスの向上が期待できます。
条件を満たさないリクエストでは、「インデックス付与」の設定がない場合と同等のパフォーマンスになります。

  • 並び順を昇順にする (降順ではインデックスが活用されません)
    • 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コミュニティにご参加ください。