2014-11-06 9 views
0

웹 사이트에 http://arquitectospelomundo.com이 표시되며, 여기에 클릭 정보가 포함 된 정보를 표시하는 markerclusterer 기능이 여러 마커를 표시합니다. 지도에서 직접 클릭하면 정보 창이 올바른 위치에 나타납니다. 사이드 바 (그림 중 하나)를 클릭하면 정보창이 바깥 쪽을 향합니다. 제대로 작동하고 갑자기 변경되었습니다. 나는 그것을 이해하려고 노력하고 있지만 지금까지는 성공하지 못하고있다. 나는 올바른 방향으로 나를 가리키는 도움을 주시면 감사하겠습니다. 감사합니다.Google지도 정보창의 위치가 잘못되었습니다.

+0

A [최소, 테스트, 완벽한 읽을 예]를 게시하시기 바랍니다 (http://stackoverflow.com/help/mcve) 문제에 대한 질문 자체가 아닌 링크 웹 사이트. – geocodezip

+0

면책 조항에 대한 링크를 제공해 주셔서 감사합니다. 나는 다음 번에 더 정확하게하려고 노력할 것이다. – BMM

답변

1

문제는 MarkerClusterer와 관련이있는 것으로 보입니다.

클릭이 트리거 된 마커가 클러스터 안에 있으면 마커의지도 속성이 null이며 잘못된 위치를 얻습니다.

가능한 해결 방법 :

마커는 클러스터 내 정보창에 대한 앵커로 (visible를 통해 숨겨진) 숨겨진 마커를 사용하는 경우 :

google.maps.event.addListener(marker, 'click', function() { 
    //create the dummy-marker on first click 
    if(!map.get('dummy')){ 
    map.set('dummy',new google.maps.Marker({map:map,visible:false})) 
    } 
    var latLng = marker.getPosition(); 

    //when the marker is within a cluster 
    if(!marker.getMap()){ 
    //set position of the dummy 
    map.get('dummy').setPosition(latLng); 
    //use dummy as infowindow-anchor 
    marker= map.get('dummy'); 
    } 
    map.panTo(latLng); 
    infowindow.setContent(contentString); 
    infowindow.open(map,marker); 

}); 
+0

해결책 주셔서 대단히 감사합니다. 나는 그것이 며칠 전에 일하고 있었던 이래로 왜 이런 일이 일어 났는지 모른다. 그러나이 규범은 문제를 해결했습니다. 다시 한번 감사드립니다. – BMM

0

내가 외부 마커 클러스터 러와 함께 같은 문제가 없었다 클릭하여지도를 열고 정보창을 엽니 다. 더미 마커가있는 @ Dr.Molle의 해결책은 좋은 방향이지만 문제는 팬을 사용하여 더미를 사용할 수 있지만 리스너가지도에없는 마커를 클릭하는 것입니다. 올바른 정보창이 열리지 만 자동 열기 기능은 이동할 위치를 알 수 없으므로 마지막 클릭 이후의 위치를 ​​유지합니다. 이것은지도 외부에서 반복되는 클릭으로 인한 문제입니다. 첫 번째 클릭은 정상적으로 진행되지만 두 번째 또는 세 번째 클릭은 잘못되었거나 클러스터에있는 경우에만 작동합니다.

해결책은 마커가 클러스터에 있는지, 예를 들어지도에 부착했는지 테스트 한 다음 클릭 후 제거합니다 (지도가 느려지는 것을 방지하기 위해 꼭 필요한지 확실하지 않음). 나는 그것을 외부에서 클릭 할 때마다 호출되는 함수에 넣었습니다. 하지만 이벤트 리스너에 추가 할 수도 있습니다. 이것은 나를 위해 완벽하게 작동합니다 :

function openInfoWindow(id){ 

    googlemap.setZoom(13); 
    var marker = markers[id]; 
    var latLng = marker.getPosition(); 

    if(!marker.getMap()){ //if the clicked marker is in a cluster, so it is not attached to a map 

     marker.setMap(googlemap); //attach it to the map 
     google.maps.event.trigger(marker, 'click'); // the standard trigger, opens infowindow 
     googlemap.panTo(latLng); 
     marker.setMap(null); //detach it from the map (not sure if necessary 

    } else { 

     google.maps.event.trigger(marker, 'click'); 
     googlemap.panTo(latLng); 

    } 

    return false; 
} 
관련 문제