许多基于位置的服务都提供了用于查找给定纬度经度对周围的地点/场所/地点的API。我正在研究如何在整个城市中搜索这些地方。地理网格搜索算法
我可以通过从Google地图地理编码器中获取边界来构建城市的网格,然后递增纬度/经度以放置点以形成网格。我已经prototyped this grid(点击填充网格按钮查看所有的要点)来可视化这个想法。
// 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);
我可以采取所有这些要点,并针对LBS API运行搜索。
我的问题是,有更多的科学方法/算法来建立这个网格?我想了解更多关于他们的信息。我只是任意增加经纬度,直到我到达电网的边界。城市的密度会随着城市和城市的不同而变化,所以有时增量会过小,有时也会过大。我正在寻找关于如何调整这个更好一点的想法?
我边框从API结果我一直在寻找foursquare,twitter,gowalla和yelp API。半径(范围)是一个常见参数,但问题变成了返回结果的数量(它们将搜索限制为少数),所以我无法通过单个搜索来获取城市中的所有地点。好主意,我很欣赏答案! – RyanW 2010-07-01 17:19:28
增加了另一个建议=) – 2010-07-01 19:02:28
太好了,这给了我另一种解决方法。我喜欢它,因为它从中心扩散开来,并不像浪费。通过网格搜索,许多搜索将超出城市范围。感谢您对此进行了解释。 – RyanW 2010-07-02 00:26:20