2013-02-28 59 views
0

我正在使用谷歌地图API(vs3)编写在线地图。使用Lat和Lng的谷歌地图关闭标记

我正在做的是在我的数据库中存储位置(经纬度和长度),并将它们添加到initialize()上的 地图上 - 这将根据标记的位置放置标记。到现在为止还挺好。

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

只是为了显示你明白我的意思:

功能showPlaceCloseBy(纬度,经度){

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。谁能帮我?

谢谢大家。

回答

1

Th Ë谷歌地图API V3 spherical geometry library有一个方法:

computeDistanceBetween(来源:经纬度,来:经纬度) - 数字 - 返回两个LatLngs之间的距离。

它以米为单位返回两个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? 
+0

我要去试试!你很快就知道了! – 2013-03-01 01:09:41