2014-03-12 29 views
0

我無法通過循環標記數組來設置標記簇中的標記。我總是得到消息Uncaught TypeError: Property 't' of object [object Object] is not a function這意味着setVisible在我的情況下不是一個函數。 (在CHROM調試之後實測出)GoogleMaps Marker setVisible不是函數

下面的代碼被使用(簡化):

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 = []; 
    } 
} 

該錯誤是拋出deleteMarkers上的線與markers[i].setVisible(false);什麼導致引發此錯誤?這似乎是標記被放置在陣列內Object,而不是google.maps.Marker

+0

這是肯定不是導致錯誤的代碼。順便說一句,你從哪裏得到'位置'和'地圖'?這是一個使用你的代碼的工作演示 - > http://jsfiddle.net/VpK29/ – davidkonrad

+0

如果我在我的同事的Chrome或Firefox的Firefox中調試我的腳本,它崩潰在我的文章中提到的確切行。由於使用此js的網站未發佈,因此我可能不會向您顯示我的整個代碼。我試圖用更多的代碼做一個小提琴;-) 位置是一個'new LatLng()'由我們自己的web服務的json結果創建的值。 '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> 

錯誤wasnt通過谷歌地圖,而是通過對聚類器調用removeMarker拋出:

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

我所做的只是從腳本中刪除_compiled (因爲我想知道這段代碼出了什麼問題)。但代碼找不到這個錯誤的來源,代碼開始工作。 我認爲在編譯後的版本中有些東西會干擾我們的腳本,因爲我們網站上有很多js腳本。

所以這個問題對我來說是固定的,因爲我們將腳本作爲未編譯版本嵌入。