好的我有餐馆名单。所有的餐厅都有地址,我想这样做你可以在输入栏中写一个位置,然后它会显示最接近的餐馆列表然后下降..例如:
搜索:Valby(丹麦的城市)
Restaurant Ankrara - 2 km from Valby
Restaurant JuicyFood - 3 km from Valby
Restaurant FoodJuicy - 5 km from Valby
Restaurant Blabla - 22 km from Valby
经过SO的研究和质疑,我发现我需要使用地理编码和谷歌地图API。
好的,所以我到了将你输入的内容(上例中的城市Valby)转换为地理编码(lat / lng坐标)的步骤。
然后我在坐标中有地址。
如何计算城市与坐标中餐厅地址之间的公里数?
例如,这里是城市“Valby”的绳索:
55.662133, 12.508028
这里有3家餐厅地址:
55.667029, 12.527715
55.6939821, 12.4934945
55.6696885, 12.3755492
(我怎样才能以最接近/最接近的方式显示它们然后降序< - 对于接受的答案不是必需的,我最终会为此提出一个新问题)
答案 0 :(得分:1)
您可以计算距离:
var pos = new google.maps.LatLng(55.662133, 12.508028);
var r1 = {name: "rest1", lat: 55.667029, lng: 12.527715, dist: 0};
var r2 = {name: "rest2", lat: 55.6939821, lng: 12.4934945, dist: 0};
var r3 = {name: "rest3", lat: 55.6696885, lng: 12.3755492, dist: 0};
var r = [r3, r2, r1];
for (var i = 0; i < r.length; ++i) {
var p = new google.maps.LatLng(r[i].lat, r[i].lng);
var d = google.maps.geometry.spherical.computeDistanceBetween(pos, p);
r[i].dist = d;
}
然后对它们进行排序:
r.sort(function(r1, r2) {return r1.dist - r2.dist;});
有关详细信息,请参阅running source code on jsfiddle。
答案 1 :(得分:0)
您可以计算服务器上的距离。请参阅文章Creating a Store Locator with PHP, MySQL & Google Maps