2012-05-17 7 views
1

런타임에 Google지도에 여러 마커를 만들어야합니다.런타임에 생성 된 마커의 위치를 ​​변경하는 방법 (Google지도 v3)

초기 위치는 임의로 정의됩니다.

생성 될 때 어떻게 그 중 일부 위치를 변경할 수 있습니까? 새로운 위치도 임의로 정의됩니다.

내가 오류

marker1 is not defined 

받고 있어요,

marker1.setPosition(pt); 

로 시도 ...하지만 않았다 나는 그 문제는지도를 만들 때 순간에 정의되지 않은 그 MARKER1 것 같다 .. 그런 것.

어떻게 해결할 수 있습니까?

p.s. 만들 수있는 마커의 수에는 제한이 없습니다. 당신은 newMarkeraddNewMarker 기능의 범위에 볼 수 있습니다 볼 수 있듯이

function addNewMarker(locationsTotal) { 

if (document.getElementById("lon1").value == '') document.getElementById("lon1").value = '19'; 
if (document.getElementById("lat1").value == '') document.getElementById("lat1").value = '45'; 

var parliament = (map.getCenter()); 

var newMarker = 'marker' + locationsTotal; 
newMarker = new google.maps.Marker({ 
    name:newMarker, 
    id:newMarker, 
    map:map, 
    draggable:true, 
    animation: google.maps.Animation.DROP, 
    position: parliament, 
    icon: 'img/pin.png' 
}); 

google.maps.event.addListener(newMarker, "dragend", function() { 
    var center = newMarker.getPosition(); 
    var latitude = center.lat(); 
    var longitude = center.lng(); 
    var newLon = 'lon' + locationsTotal; 
    var newLat = 'lat' + locationsTotal; 
    document.getElementById(newLon).value = longitude; 
    document.getElementById(newLat).value = latitude; 
}); 

} 
+0

당신이 마커를 생성하는 데 사용하는 코드를 게시 할 수 :

는 이름으로 마커 기능을 추가 액세스하려면? – WojtekT

+0

여기 업데이트 된 부분에 – user198003

답변

3

:

UPDATE 마커가 만들어집니다. 필요한 것은 전역 범위에서 표시 할 수있는 배열에 마커를 저장하는 것입니다. 예를 들어 : 당신의 함수를 수정 : 당신이 그들을 조작 할 수 있도록

var allMarkers = []; 
function addNewMarker(locationsTotal) { 
    //.... skip 
    allMarkers.push(newMarker); 
} 

모든 마커는 이제 배열에 저장된다.

function getMarker(name) { 
    for (k in allMarkers) 
    if (allMarkers[k].name == name) return allMarkers[k]; 
    return null; 
} 
+0

아니요, 아직 정의되지 않았습니다 – user198003

+0

getMarker 함수를 사용하여 이름으로 마커를 찾습니다. – WojtekT

+0

작동, tnx !!! – user198003

관련 문제