2014-11-21 2 views
0

마커를 클릭하면 거리지도가 표시된다는 것을 Google지도에 플롯 한 각 마커에 추가하려고합니다.Google API 스트리트 뷰 오류

for(var i = 0; i < mapPoints.length; i++) 
{ 
    var marker = new google.maps.Marker({ 
     position: mapPoints[i], 
     map:map, 
    }); 

    var panoramaOptions = { 
     position: mapPoints[i], 
     pov: { 
      heading: 34, 
      pitch: 10 
     } 
    }; 

    google.maps.event.addListener(marker, 'click', 
     function(){ 
      var panorama = new google.maps.StreetViewPanorama(document.getElementById("map_canvas"), panoramaOptions); 
      map.setStreetView(panorama); 
     } 
    ); 
} 

그러나 모든 마커를 클릭하면 마지막 마커의 가로보기 만 표시됩니다.

+0

는 [최소 완료하고 검증 가능한 예]를 입력하십시오 (http://stackoverflow.com/help/mcve). – MrUpsidown

답변

0

문제는 루프에서 마커를 만드는 것입니다. 그러나 마커를 클릭하면 panoramaOptions이 이벤트 청취자를 정의하는 마커를 반복 할 당시의 내용이 아닌 클릭했을 때 이 생성됩니다. 따라서 항상 마지막 설정 값과 동일합니다.

대신을 시도해보십시오

for(var i = 0; i < mapPoints.length; i++) 
{ 
    var marker = new google.maps.Marker({ 
     position: mapPoints[i], 
     map:map, 
    }); 

    var panoramaOptions = { 
     position: mapPoints[i], 
     pov: { 
      heading: 34, 
      pitch: 10 
     } 
    }; 

    defineEventListener(marker, panoramaOptions); 
} 

function defineEventListener(marker, panoramaOptions) { 
    google.maps.event.addListener(marker, 'click', 
     function(){ 
      var panorama = new google.maps.StreetViewPanorama(document.getElementById("map_canvas"), panoramaOptions); 
      map.setStreetView(panorama); 
     } 
    ); 
} 
+0

효과가있었습니다! 고맙습니다! – user3529942