如何找到我的地图可见区域的接近程度?
所有这些都有效,并且是为帮助可能正在寻找答案的其他人而发布的文章。
此代码查看您的Google Map v3,并通过变量proximity输出当前地图视图范围内的半径(以英里为单位)。
请确保在您的HTML中有:
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true&libraries=geometry"></script>
作为库,geometry使其成为可能。
// Get Gmap radius / proximity start
var bounds = new google.maps.LatLngBounds();
var sw = bounds.getSouthWest();
var ne = bounds.getNorthEast();
var proximitymeter = google.maps.geometry.spherical.computeDistanceBetween (sw, ne);
var proximitymiles = proximitymeter * 0.000621371192;
alert(" " + proximitymiles + " Miles Proximity");
var proxmity = proximitymiles;
// Get Gmap radius / proximity End
希望能够帮到有需要的人。
以下是一个额外的编辑(未经测试),可允许屏幕旋转:
// Get Gmap radius / proximity start
var bounds = new google.maps.LatLngBounds();
var sw = bounds.getSouthWest();
var ne = bounds.getNorthEast();
var se = bounds.getSouthEast();
var nw = bounds.getNorthWest();
var proximitymeterswne = google.maps.geometry.spherical.computeDistanceBetween (sw, ne);
var proximitymetersenw = google.maps.geometry.spherical.computeDistanceBetween (se, nw);
if (proximitymeterswne > proximitymetersenw) {proximitymeterswne = proximitymiles}
else {if (proximitymetersenw > proximitymeterswne) {proximitymetersenw = proximitymiles};};
var proximitymiles = proximitymeter * 0.000621371192;
alert(" " + proximitymiles + " Miles Proximity");
var proxmity = proximitymiles;
// Get Gmap radius / proximity End
另一个编辑
// Watches for map bounds change - if so - set radius and refresh data Start
function setproximityfrommap() {
// https://dev59.com/2XA75IYBdhLWcg3wAD_x
// Get Gmap radius / proximity start
var bounds = new google.maps.LatLngBounds();
// bounds = map.LatLngBounds();
//center = new google.maps.LatLng();
ne = bounds.getNorthEast();
center = map.getCenter();
//var center = map.LatLngBounds.getCenter();
//var ne = map.LatLngBounds.getNorthEast();
// r = radius of the earth in statute miles
var r = 3963.0;
// Convert lat or lng from decimal degrees into radians (divide by 57.2958)
var lat1 = center.lat() / 57.2958;
var lon1 = center.lng() / 57.2958;
var lat2 = ne.lat() / 57.2958;
var lon2 = ne.lng() / 57.2958;
// distance = circle radius from center to Northeast corner of bounds
proximity = r * Math.acos(Math.sin(lat1) * Math.sin(lat2) + Math.cos(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1));
$('#proximity').val(proximity);
// Get Gmap radius / proximity End
};
我将编辑过的代码放在了第一篇帖子中。Terran
0.000621371192
这个数字的。我问这个问题是因为这个数字对我来说有点偏差,而且很难调试出原因。我以为可能是Maps API认为我的地图大小与DOM实际显示的大小不同,但即使我将高度改变了150像素,sw
和ne
边界仍然是相同的。 - Trevan HetzelgetBoundsNorthWest : function(bounds) { var ne = bounds.getNorthEast(); var sw = bounds.getSouthWest(); return new google.maps.LatLng (ne.lat(), sw.lng());
}, getBoundsSouthEast : function(bounds) {var ne = bounds.getNorthEast(); var sw = bounds.getSouthWest(); return new google.maps.LatLng (sw.lat(), ne.lng());
} - pasx