我无法通过循环标记数组在标记簇中设置标记。我总是得到消息Uncaught TypeError: Property 't' of object [object Object] is not a function
哪个转换为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 = [];
}
}
deleteMarkers
在markers[i].setVisible(false);
行上引发错误导致此错误被抛出的原因是什么?看起来标记放在数组内部Object
而不是google.maps.Marker
答案 0 :(得分: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脚本。
所以问题对我来说是固定的,因为我们将脚本嵌入为未编译的版本。