获取Google Maps API地图的宽度(以千米为单位)

时间:2016-02-16 08:51:04

标签: javascript google-maps google-maps-api-3

如何获取Google地图上可见区域的当前宽度,我已经阅读了很多文档但没有成功?我需要以千米为单位获得真实的可见区域宽度。

1 个答案:

答案 0 :(得分:2)

我认为getBounds()就是你要找的。

var map = new google.maps.Map(document.getElementById("map_canvas"),
        myOptions);

    google.maps.event.addListener(map, 'idle', function(event) {
        var bounds = map.getBounds();

您将收到一个LatLngBounds对象(供参考https://developers.google.com/maps/documentation/javascript/reference#LatLngBounds)。

这包含NortEase和SouthWest LatLng点。使用这些公式应该很容易以公里为单位获得宽度。您可以从LatLng点创建2对以创建NorthWest和NorthEast对,并计算它们之间的距离。

var R = 6371000; // metres
var φ1 = lat1.toRadians();
var φ2 = lat2.toRadians();
var Δφ = (lat2-lat1).toRadians();
var Δλ = (lon2-lon1).toRadians();

var a = Math.sin(Δφ/2) * Math.sin(Δφ/2) +
    Math.cos(φ1) * Math.cos(φ2) *
    Math.sin(Δλ/2) * Math.sin(Δλ/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));

var d = R * c;

将此视为参考(http://www.movable-type.co.uk/scripts/latlong.html)。