使用Lat和Lng关闭谷歌地图标记

时间:2013-02-28 22:53:33

标签: javascript google-maps geography

我正在使用谷歌地图API(vs3)编写在线地图。

我正在做的是在我的数据库中存储位置(lat和long)并将它们添加到 初始化()上的地图 - 根据位置放置标记。到目前为止一切都很好。

现在我有一个显示我的位置(或用户定义的位置)的功能。我想显示111公里范围内的地方= 1度纬度/经度。我怎样才能做到这一点?

只是为了告诉你我的意思:

function showPlaceCloseBy(lat,lng){

var myLat=lat;
var myLng=lng;

for (var i=0; i < pins.length; i++) {
     // HERE WE FIND WHETHER THE PLACE IS CLOSE ENOUGH
             returnDistance(myLat, myLng, pins[i],i);

    }
}



function returnDistance(myLat,myLng,pinToCompare,i){

// PIN  
var calcLat= myLat-pinToCompare.position.hb; // IS THIS RIGHT?
var calcLong = myLng-pinToCompare.position.ib; // IS THIS RIGHT?

 // HERE I NEED TO DO THE CALCULATION AND RETURN THE PIN NAME.              

     }

所以,现在我需要在myLat和pinLat之间进行计算(可能是减法 - ? - )。谁能帮我?

谢谢大家。

3 个答案:

答案 0 :(得分:1)

Google Maps API v3 spherical geometry library有一个方法:

  

computeDistanceBetween(from:LatLng,to:LatLng) - number - 返回两个LatLng之间的距离。

以米为单位返回两个LatLng对象之间的距离。

(未经测试)

var closeDistance = 111000; // 111 km
function showPlaceCloseBy(lat,lng){
  var myLocation = new google.maps.LatLng(lat, lng);
  closePins = [];
  for (var i=0; i < pins.length; i++) {
     // HERE WE FIND WHETHER THE PLACE IS CLOSE ENOUGH
     if (calculateDistanceBetween(myLocation, pins[i].getPosition()) < closeDistance)
     {
       closePins.push(pins[i]);
     }
  }
  return closePins;
}


// Note: do not use undocumented properties like .hb, .ib; they can and do change.
var calcLat= myLat-pinToCompare.position.hb; // IS THIS RIGHT?
var calcLong = myLng-pinToCompare.position.ib; // IS THIS RIGHT?

答案 1 :(得分:0)

这应该只是一个简单的距离计算 http://www.purplemath.com/modules/distform.htm

所以你的代码将是

return Math.sqrt( Math.pow( calcLat, 2 ) + Math.pow( calcLong, 2 ) )

答案 2 :(得分:0)

你会在这里找到一切: http://www.movable-type.co.uk/scripts/latlong.html

各种精度,方向(方位/方位角),一切的距离; - )