2013-02-28 2 views
0

Google지도 API (vs3)를 사용하여 온라인지도를 작성하고 있습니다.Lat 및 Lng를 사용하여 Google지도로 마커 닫기

내가하고있는 일은 내 데이터베이스에 위치 (위도와 경도)를 저장하고 위치를 기준으로 마커를 배치하는 initialize()의 지도에 추가하는 것입니다. 여태까지는 그런대로 잘됐다.

이제 내 위치 (또는 사용자가 정의한 위치)를 보여주는 함수가 있습니다. 나는 에 111 km = 1 degree lat/lng 이내의 장소를 보여주고 싶습니다.. 어떻게해야합니까?

그냥 내가 무슨 뜻인지를 보여 :

기능 showPlaceCloseBy을 (위도, 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. 누구든지 나를 도울 수 있습니까?

감사합니다. 다양한 정확도 http://www.movable-type.co.uk/scripts/latlong.html

거리, 방향 (베어링 :

답변

1

Th 수 - - 두의 LatLng 사이의 거리를 돌려줍니다 (LatLng를 :에,하는 LatLng에서)

computeDistanceBetween : 전자 Google지도 API v3의 spherical geometry library는 방법이있다.

두 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

나는 거 시도하고있다! 빨리 알아! –

0

것이 단순한 거리 계산 해야/방위각), 모든 것 ;-)