0

我想在我的网站上显示一个谷歌地图以及一个以英里为单位的面积大小的标题。为此,我将使用左右边界之间的区域。

例如,在地图下会显示“3 英里”,然后当用户放大时,它会变为“1 英里”等等

谢谢

4

2 回答 2

1

API 有一个距离方法,它以米为单位返回距离。所以你可以这样做:

var bounds = myMap.getBounds();
google.maps.geometry.spherical.computeDistanceBetween(bounds.getNorthEast(), bounds.getSouthWest());
于 2013-12-15T04:23:48.837 回答
0

首先调用Map 对象getBounds()的方法。这将返回一个LatLngBounds对象,您可以从中知道地图定义的边界框的纬度和经度。

现在您已经掌握了纬度和经度,您只需应用Haversine 公式来计算距离。有关此等式的详细概述,以及 Javascript 中的示例,请参阅此页面。摘录如下:

var R = 6371; // km
var dLat = (lat2-lat1).toRad();
var dLon = (lon2-lon1).toRad();
var lat1 = lat1.toRad();
var lat2 = lat2.toRad();

var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
        Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2); 
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
var d = R * c;

由于上述等式以公里为单位,并且您要求英里,因此您可以执行的另一项修改是将输出 ( d) 转换为英里。将公里转换为英里只需除以 1.609344。所以,你可以简单地:

d /= 1.609344;

对此进行扩展,您甚至可以允许用户在英里/公里之间进行选择,并将整个事情包装在一个if语句中:

if(miles)
  d /= 1.609344;
于 2013-10-06T04:16:52.497 回答