Google Maps Marker setVisible不是一个功能

时间:2014-03-12 12:46:00

标签: javascript google-maps google-maps-api-3

我无法通过循环标记数组在标记簇中设置标记。我总是得到消息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 = [];
    }
}

deleteMarkersmarkers[i].setVisible(false);行上引发错误导致此错误被抛出的原因是什么?看起来标记放在数组内部Object而不是google.maps.Marker

1 个答案:

答案 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脚本。

所以问题对我来说是固定的,因为我们将脚本嵌入为未编译的版本。