【问题标题】:How to make " xx km " from Location, geo/google api如何从 Location、geo/google api 制作“xx km”
【发布时间】:2011-12-13 04:56:12
【问题描述】:

好的,我有一份餐厅清单。所有的餐馆都有一个地址,我想这样做你可以在输入字段中写一个位置,然后它将显示最接近的餐馆列表,然后降序..示例:

搜索:瓦尔比(丹麦的城市)

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 城市)转换为地理编码(纬度/经度坐标)。

然后我有坐标中的地址。

如何计算坐标中城市和餐厅地址之间的公里数?

例如,这里是城市“Valby”的绳索:

55.662133, 12.508028

这里有 3 个餐厅地址线:

55.667029, 12.527715
55.6939821, 12.4934945
55.6696885, 12.3755492

(我怎样才能先用最接近/最近的然后降序显示它们

【问题讨论】:

  • 澄清一下,你需要沿着道路的距离,还是只是直线?

标签: google-maps google-maps-api-3 geocoding latitude-longitude


【解决方案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

【讨论】:

  • computeDistanceBetween(p1, p2):p1 和 p2 必须是 LatLng。你可以查看我的程序。
  • 好的,它开始工作了,但有一个问题。当我这样做时: computeRestaurants(55.662133, 12.508028) 然后它看起来像 function computeRestaurants(pos){ var pos = new google.maps.LatLng(pos);我得到了 NaN。我发现它是因为它添加了括号, () 所以它会执行 new google.maps.LatLng(((55.662133, 12.508028)); 它不起作用并给出 NaN。我该如何解决这个问题,以便它可以从函数中获取位置?
  • 选项 1:定义 function compRest(pos) {..use directly pos..} 并将其称为 compRest(new google.maps.LatLng(55.6, 12.5));。选项 2:定义 function compRest(lat,lng) {var pos=new google.maps.LatLng(lat,lng); ...}。称它为compRest(55.6, 12.5);
  • 尝试computeRestaurants(point),因为point 已经是LatLng。我建议您切换到最新的 Google 地图 v3。
  • Still NaN :(。我以为这是最新的。我怎样才能切换到最新的,然后这个解决方案可能不再起作用了?
【解决方案2】:

您可以在服务器上计算距离。见文章Creating a Store Locator with PHP, MySQL & Google Maps

【讨论】:

    猜你喜欢
    • 2014-04-01
    • 2020-01-29
    • 1970-01-01
    • 2011-06-16
    • 2015-06-02
    • 2013-05-31
    • 2014-11-05
    • 2017-02-14
    • 1970-01-01
    相关资源
    最近更新 更多