如何获取Google地图上可见区域的当前宽度,我已经阅读了很多文档但没有成功?我需要以千米为单位获得真实的可见区域宽度。
答案 0 :(得分:2)
我认为getBounds()就是你要找的。 p>
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;