2013-04-20 4 views
1

도움이 필요합니다.
데이터베이스에서 일부 지점을로드하고 Google지도에 마커로 표시했습니다.
내 코드 :마커 - Google지도를 클릭 할 때 주소 입력

function DisplayTraficCir(points) { 
    for (i=0;i<points.length;i++){ 
    var myLatLng = new google.maps.LatLng(points[i].latitude,points[i].longitude) 
    var marker = new google.maps.Marker({ 
     position: myLatLng, 
     map: map 
    }); 
    } 
} 

그리고 지금, 나는 내가 몇 가지 물건을 할 Google지도에서 이러한 마커 중 하나를 클릭하면 지점의 정보 (위도/경도) 싶어.
도와주세요. 감사합니다. .

답변

0

사용 google.maps.event.addListener 방법 :

function DisplayTraficCir(points) { 
    for (i=0;i<points.length;i++){ 
    var myLatLng = new google.maps.LatLng(points[i].latitude,points[i].longitude) 
    var marker = new google.maps.Marker({ 
     position: myLatLng, 
     map: map 
    }); 
    google.maps.event.addListener(marker, 'click', function() { 
     var lng = points[i].longitue, 
      lat = points[i].latitude; 
     alert(lat + "-" + lng); 
    }); 
    } 
} 

Demo

+0

그러나지도의 마커를 클릭하면 경고가 동일합니다. 값은 마지막 점의 위도와 경도입니다. –

+0

확인. 다 했어. 함수에 "google.maps.event.addListener"메서드를 넣고 "for"문에서 호출하면됩니다. 당신의 도움을 주셔서 감사합니다! –

+0

for 루프에서'marke.getPosition()'메소드를 사용하려면 각 클릭에 대해 해당 마커를 선택하도록'this.getPosition()'을 사용하십시오. 자세한 내용은 내 데모를 업데이트하십시오. – razzak

0

razzak의 접근 방식은 작동하지만, 나는 다른 제안하고 싶습니다 : 단순히으로 루프 본문을 이동하여

function DisplayTraficCir(points) { 
    for(var i = 0; i < points.length; i++) { 
     DisplayTraficPoint(points[i]); 
    } 
} 

function DisplayTraficPoint(point) { 
    var myLatLng = new google.maps.LatLng(point.latitude, point.longitude); 
    var marker = new google.maps.Marker({ 
     position: myLatLng, 
     map: map 
    }); 
    google.maps.event.addListener(marker, 'click', function() { 
     alert(point.latitude + "-" + point.longitude); 
    }); 
} 

을 함수는 이제 함수가 호출 될 때마다 해당 함수 내부의 변수를 고유하게 캡처합니다. 즉, point 변수는 호출 된 특정 points[i] 값을 나타냅니다. 마찬가지로 myLatLng 및 은이 함수가 호출 될 때마다 고유합니다.

이것은 마커와 연결할 수있는 다른 데이터를 추적 할 수있는 매우 유연하고 강력한 방법을 제공합니다. 데이터를 DisplayTraficPoint()의 로컬 변수로 만듭니다.

0

마커를 클릭하면 graphAddress() 함수를 호출하기 만하면됩니다.

function graphAddress(){ 
    geocoder.geocode({'latLng': marker_wizard.getPosition()}, function(results, status) { 
      if (status == google.maps.GeocoderStatus.OK) { 
        if (results[0]) { 
          var address = results[0].formatted_address.split(","); 
          var country = address[address.length -1];  
          var cityname = address[address.length -3];      
          var state_zipcode = address[address.length -2].split(" "); 
          var state = state_zipcode[1]; 
          var zipcode = state_zipcode[2]; 
          address = address.splice(0,(address.length -3)); 
         } 
       } 
     }); 
} //graphAddress 

참고 : marker_wizard 마커의 변수 이름입니다.

관련 문제