【问题标题】:Google Maps v3 - Viewable map radius in milesGoogle Maps v3 - 以英里为单位的可视地图半径
【发布时间】: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


【解决方案1】:
// 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
    // First, determine the map bounds
    var bounds = map.getBounds();

    // Then the points
    var swPoint = bounds.getSouthWest();
    var nePoint = bounds.getNorthEast();

    // Now, each individual coordinate
    var swLat = swPoint.lat();
    var swLng = swPoint.lng();
    var neLat = nePoint.lat();
    var neLng = nePoint.lng();

    var proximitymeter = google.maps.geometry.spherical.computeDistanceBetween(swPoint, nePoint);
    var proximitymiles = proximitymeter * 0.000621371192;
    proxmity = proximitymiles;
    console.log("Proxmity " + proximitymiles + " miles");
}

【讨论】:

    猜你喜欢
    • 2017-01-16
    • 2017-08-14
    • 2018-12-14
    • 2011-06-28
    • 1970-01-01
    • 2015-03-01
    • 1970-01-01
    • 2014-11-09
    • 2016-09-03
    相关资源
    最近更新 更多