2014-03-12 3 views
0

마커 배열을 반복하여 마커 클러스터에서 마커를 보이지 않게 설정할 수 없습니다. 나는 항상 메시지를 받는다 Uncaught TypeError: Property 't' of object [object Object] is not a function setVisible로 변환되는 것은 필자의 경우 함수가 아니다. 다음 코드를 사용 (간체)되어GoogleMark 마커 setVisible이 함수가 아닙니다.

(CHROM에서 디버깅 후에 찾을 수) :

var markers = []; 
function placeMarker() { 
    marker = new google.maps.Marker({ 
     position: position, 
     map: map, 
     icon: pinImage, 
    }); 

    markers.push(marker); 
} 

function deleteMarkers() { 
    if (markers) { 
     for (var i = 0; i < markers.length; i++) { 
      markers[i].setVisible(false); 
     } 
     markers = []; 
    } 
} 

오류는이 오류가 발생하는 원인이 무엇 markers[i].setVisible(false);와 라인에 deleteMarkers에 발생합니다? 마커가 배열 내부에 배열 된 것 같습니다. 대신 google.maps.Marker

+0

이것은 오류의 원인이되는 코드가 아닐 수 없습니다. BTW, 어디에서'position'과'map'을 얻을 수 있습니까? 여기에 귀하의 코드를 사용하여 작업 데모가 있습니다 -> http://jsfiddle.net/VpK29/ – davidkonrad

+0

크롬에서 제 스크립트를 디버깅하거나 제 동료의 파이어 폭스에서 내 게시물에 언급 된 정확한 행이 충돌합니다. 이 js를 사용하는 사이트가 게시되지 않았기 때문에 전체 코드를 표시하지 않을 수 있습니다. 위치는 우리 자신의 웹 서비스의 json 결과 값에 의해 생성 된'new LatLng()'입니다. 'map'은'google.maps.event.addDomListener (window, 'load', initializeMap)에 의해 호출 된 초기화 메소드에서 초기화됩니다. – KeepAlive

답변

1

문제가 해결되었지만 가장 좋은 방법은 아닙니다. 나는이 스크립트는 내 소스에 포함했다

<script src="http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/src/markerclusterer_compiled.js" type="text/javascript"></script> 

오류는 구글 맵으로 대신 클러스터 러에 removeMarker에 대한 호출에 의해 슬로우 않네 :

google.maps.event.addListener(marker, 'visible_changed', function() { 
    if (marker.getVisible()) { 
     markerCluster.addMarker(marker, true); 
    } else { 
     markerCluster.removeMarker(marker, true); 
    } 
}); 

내가 스크립트에서 _compiled을 제거했다 않은 모든 (이 코드에서 무엇이 잘못되었는지 알고 싶기 때문에). 그러나이 오류의 원인을 찾는 대신 코드가 작동하기 시작했습니다. 우리 사이트에는 많은 js 스크립트가 있기 때문에 컴파일 된 버전에서 스크립트에 방해가되는 부분이 있다고 생각합니다.

그래서 우리는 스크립트를 컴파일되지 않은 버전으로 포함 시키므로 문제가 해결되었습니다.

관련 문제