Googles Map API v3 - 无效的调用对象

时间:2016-04-20 14:33:35

标签: javascript google-maps-api-3

我最近从IE7升级到IE10。我们在下面的第二行代码中收到错误无效的调用对象(if(init< markers.length))。

function loadMarkers() {
if (init < markers.length) {
    var max = Math.min(init + 10, markers.length);
    while (init < max) {
        var lat = parseFloat(markers[init].getAttribute("lat"));
        var lng = parseFloat(markers[init].getAttribute("lng"));
        var point = new google.maps.LatLng(lat, lng);
        var html = markers[init].getAttribute("html");
        var propType = markers[init].getAttribute("propType");

        switch (propType) {
            case '1':
                //markerColor = "Red";
                markerColor = "FF0000";
                break;
            case '2':
                //markerColor = "Yellow";
                markerColor = "FFFF00";
                break;
            case '3':
                //markerColor = "Green";
                markerColor = "00FFBF";
                break;
            case '4':
                //markerColor = "White";
                markerColor = "FFFFFF";
                break;
            default:
                //markerColor = "Red";
                markerColor = "FF0000";
        }
        var marker = createMarker(point, html, init + 1, markerColor);
        markerArray.push(marker);
        if (init == 0) {
            map.setCenter(marker.position, 13);
        }
        $("#results").append("<li onclick='selectMarker(" + init + ")'>" + html.substring(html.indexOf(">", html.indexOf(">", html.indexOf(">") + 1) + 1) + 1, html.indexOf("</a>") - 4) + "</li>");
        init = init + 1;
        $("#load").css({
            'display': 'block'
        });
        $("#load").html("<b>Loading " + init + " of " + (markers.length) + "</b>");
    }
    if (init % 50 == 0) {
        showAll();
    }
    window.setTimeout(loadMarkers, 50);
}
if (init >= markers.length) {
    showAll();
    $("#load").css({
        'display': 'none'
    });
}

}

我是新手,需要您的帮助才能解决此问题 请帮助我。

2 个答案:

答案 0 :(得分:1)

您将标记声明为var markers;,但随后假设标记具有长度:

if (init < markers.length)

标记可能不是数组,因为它没有这样定义。您应该将其定义为数组:

var markers = [];

答案 1 :(得分:0)

非常感谢你的指导。我将标记定义为数组,但它无法正常工作。所以我使用了数组变量,现在工作正常。

app.config(function ($interpolateProvider) {
    $interpolateProvider.startSymbol('//');
    $interpolateProvider.endSymbol('//');
});

var xx = markers.length; yy = markers [init];