ロケーションベースのサービスの多くは、特定の緯度経度ペアの周りの場所/会場/スポットを見つけるためのAPIを提供します。街全体でこれらの場所を検索する方法を調べています。
Google Maps Geocoderから境界を取得し、緯度/経度をインクリメントしてポイントを配置してグリッドを形成することで、都市のグリッドを構築できます。このアイデアを視覚化するために、このグリッドのプロトタイプを作成しました([グリッドの塗りつぶし]ボタンをクリックしてすべてのポイントを表示します)。
// gather a collection of lat/long pairs that represents a grid of the city
var latIncrement = .04;
var lngIncrement = .04;
var newLat = nw.lat();
while(newLat >= sw.lat()) {
var newLng = nw.lng();
while(newLng <= ne.lng()) {
// western and northern border as well as grid infill
addMarker(new google.maps.LatLng(newLat, newLng));
newLng += lngIncrement;
}
// eastern border
addMarker(new google.maps.LatLng(newLat, ne.lng()));
newLat -= latIncrement;
}
// southern border
var newLng = sw.lng();
while(newLng <= se.lng()) {
addMarker(new google.maps.LatLng(sw.lat(), newLng));
newLng += lngIncrement;
}
addMarker(se);
次に、これらすべてのポイントを取得して、LBSAPIに対して検索を実行できます。
私の質問は、このグリッドを確立するためのより科学的な方法/アルゴリズムはありますか?それらについてもっと知りたいのですが。グリッドの境界に到達するまで、lat/lngsを任意にインクリメントしています。場所の密度は都市や都市の面積によって大きく異なるため、増分が小さすぎる場合と大きすぎる場合があります。これをもう少しうまく調整する方法についてのアイデアを探していますか?