tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:SOQLクエリで位置情報の近い順での取得を試してみました

SOQLクエリで位置の近い順の取得を試してみました。Salesforceでは位置情報用のデータ型を作成でき、緯度・経度の情報を登録できます。緯度・経度の情報があれば、SOQLクエリのORDER BY処理で取得することが可能です。
(Twitterで教えてもらいました。)

クエリの書き方
ORDER BY DISTANCE(AddressLatLng__c, GEOLOCATION(35.6797885, 139.7623838), 'km') ASC

AddressLatLng__cはカスタム項目のAPI名です。これとGEOLOCATION関数を組み合わせることで対象項目と指定した緯度・経度の情報から距離を判定してORDER BY処理を行うことができます。

f:id:tyoshikawa1106:20200614152034p:plain


上記のクエリで東京駅辺りの緯度経度を中心に近い順に取得した結果がこちら。
f:id:tyoshikawa1106:20200614152245p:plain


だいたい正しく取得できていそうでした。位置情報のORDER BY処理は「DISTANCE」関数と「GEOLOCATION」関数を利用すれば対応できます。


ちなみに緯度・経度の情報はGoogleMapのURLなどで確認できます。
f:id:tyoshikawa1106:20200614152756p:plain:w400