创建除第一时间标记外的清除叠加层

时间:2016-03-18 08:48:49

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

我有一个从数据库获取坐标的函数和一个设置标记(setMarker())的函数。我使用setInterval(setMarker())检查数据库,如果位置已更改,则通过调用setMarker()更新标记。

我是第一次创建标记而不是更新标记时检查它是否是{I} markerArray[i].setMap(null)。我第二次进入循环时尝试设置为null。但是我收到一条错误,说markerArray未定义。

检查在foreach循环内完成,循环必须循环到(位置坐标数)的长度,然后我设置为null。

       function setMarker(){
        var markerArray = [];
        latArray.forEach(function(lat, i) {
            //                marker = new google.maps.Marker();
            var infoWindow = new google.maps.InfoWindow({
                content: '<div id="content>' + '<p style="color:#000000">DeviceID:<p>' + '<p>' + deviceId[i] + '</p>' + '</div>'
            });
            if(markerCount >(latArray.length)) //check if marker is created for first time,if not, set to null
            {
                //console.log("!------------------");
                //console.log(marker); 


            }
            else{    //if first time, increment so that next time marker can be set to null to create new marker in new position
                markerCount++;

                console.log("else"+markerCount);
            }

            var marker = new google.maps.Marker({
                map: map,
                mapTypeId: google.maps.MapTypeId.ROADMAP,
                //position: new google.maps.LatLng(latArray[i], lngArray[i]),
                icon: "phone6.png"
            });
            markerArray.push(marker);
            //console.log(markerArray[i]);
            markerArray[i].setPosition(new google.maps.LatLng(latArray[i],lngArray[i])); //marker undefined here
            markerArray[i].addListener("click", function() {
                infoWindow.open(map, marker);
                //marker.setMap(null);
            });

        });

    }

1 个答案:

答案 0 :(得分:0)

尝试使用如下的唯一ID标记索引标记...

var getMarkerUniqueId = function(lat, lng) {
    return lat + '_' + lng;
};

然后你可以追踪特定的标记..