2013-04-08 8 views
1

하나의 마커를 추가하는 다음과 같은 기능이 있지만지도를 클릭하여 여러 마커를 추가하고 싶습니다. 내가 봤 거든하지만 난이 문제를 해결할 수있는 방법에 대한 어떤 대답을 얻을 수 없습니다.Google지도 API v3을 사용하여 여러 마커 추가

function placeMarker(location) { 
    if(marker) { 
     marker.setPosition(location); 
    } else { 
     marker = new google.maps.Marker({ 
      position: location, 
      map: gm_map, 
      draggable: true 
     }); 
    } 
} 

은 내가 Array()를 사용해야하지만 정확히 모르는 것을 알고있다. 문제를 어떻게 해결할 수 있습니까?

DEMO : 문제가 해결 되었기 때문에 제거되었습니다.

답변

2

당신이 placeMarker 함수의 marker 변수 외부를 사용해야합니까? 함수가 마커를 삭제하지 않고 마커 변수가 있는지 확인하고 함수를 사용하여 마커를 이동합니다. 마커가 여러 개 존재하게하려면 해당 행을 제거해야합니다. http://jsfiddle.net/bryan_weaver/aEyfW/

+0

때로는 가장 어려운 문제가 가장 간단합니다 .- 많은 감사드립니다! :디 – Erik

1

좋아,지도에서 '클릭'이벤트에 대한 이벤트 리스너가 있어야합니다. 그리고 이것은 현재 클릭 된 위치를 placeMarker 함수에 전달해야합니다. 이 시도

google.maps.event.addListener(gm_map, 'click', function(event) { 
     placeMarker(event.latLng); 
}); 

(당신이지도를 초기화 같은 장소에서이 이벤트 리스너를 추가) 그리고 당신의 장소 표시 기능을 수정, 그래서 대신 각 클릭으로 업데이트 한 전역 변수 마커를 필요없이, 새로운 마커를 각각 생성 시간 :

function placeMarker(location) { 
    var marker = new google.maps.Marker({ 
      position: location, 
      map: gm_map, 
      draggable: true 
     }); 
} 
+0

오 drats :

여기
function placeMarker(location) { //marker variable will only exist inside this function var marker = new google.maps.Marker({ position: location, map: gm_map, draggable: true }); } 

은 예입니다! 하나의 중요한 세부 사항을 언급하는 것을 잊어 버렸습니다. (진실하게 죄송합니다. API에서 클릭 기능을 사용하여 여러 마커를 추가하고 싶습니다. – Erik

+0

수정 해 주셔서 감사합니다.하지만 하나의 마커 만 설정하고 다시 한번 클릭하면됩니다. 지도, 이전 마커는 새 위치에서 삭제하고 설정합니다. 내 편집에서 링크를 클릭하면 무슨 뜻인지 알 수 있습니다 (이 문제가 해결되면 링크를 제거합니다). – Erik

+1

ok, 전역 제거 '마커', 매번 다시 그걸 만들면된다. (많은 마커로 끝날 수도있다.) – duncan

관련 문제