【发布时间】:2012-02-25 16:06:51
【问题描述】:
如何找到地图可见区域的距离?
所有这些都有效,是一个帮助其他可能正在寻找的人的帖子。
此代码查看您的 Google Map v3 并通过 var 接近度输出您当前地图视图的半径(以英里为单位)。
确保您的 HTML 中有
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true&libraries=geometry"></script>
因为 library=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() {
// http://stackoverflow.com/questions/3525670/radius-of-viewable-region-in-google-maps-v3
// 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
};
我把修改后的代码放在第一篇了。
人族
【问题讨论】:
-
+1 我喜欢你慷慨的方法!但是,为了保持网站的问答风格,我建议你在问题中发布目标和解决方案作为答案,然后接受它(即使它是你的)。谢谢;)
-
谢谢 - 我会的 - 不知道是什么 eticate ;)
-
我可以使用其他角添加检查,因为这适用于手机上的应用程序,它也可以转身(方向明智)。基于读数,将最大数字作为使用的接近度。
-
我没有测试过这个但是.... var se = bounds.getSouthEast(); var nw = bounds.getNorthWest(); varproximitymeterswne = google.maps.geometry.spherical.computeDistanceBetween (sw, ne); var 接近计森w = google.maps.geometry.spherical.computeDistanceBetween (se, nw); if (proximitymeterswne >proximitymetersenw) {proximitymeterswne =proximitymiles} 否则 {if (proximitymetersenw >proximitymeterswne) {proximitymeterswne =proximitymiles};};
-
我的意思是:写下您想要实现的问题或目标(简单地说“在 Google Map v3 中,我需要以英里为单位获取当前地图视图的半径。”)和添加完整解决方案的答案(不是评论)。
标签: javascript html google-maps-api-3 geolocation