我正在解析CSV文件,并将线条转换为地图上的标记,并带有侧边栏上的相应按钮。自动更新标记位置和infowindow
我创建标记当前的方法是
var bounds = new google.maps.LatLngBounds();
var sensor, i, latlng;
for (i in sensorList) {
// Creates a marker
sensor = sensorList[i];
latlng = new google.maps.LatLng(sensor.lat, sensor.lng);
bounds.extend(latlng);
var marker = createMarker(
latlng, sensor.name, sensor.reading
);
// Creates a sidebar for the marker
createMarkerButton(marker);
}
// Fit to map bounds
mapCanvas.fitBounds(bounds);
和我createMarker功能
function createMarker(latlng, title, html) {
// Creates a marker
var marker = new google.maps.Marker({
position: latlng,
map: mapCanvas,
title: title
});
// The InfoWindow is opened when the sidebar button is clicked
google.maps.event.addListener(marker, "click", function() {
infoWnd.setContent("<div class = \"PopUp\" style=\"width: 150px; height: 100px;\"<strong>"+title+"</title></strong><br>Latest reading: "+html+"<br><a href=\"\">Full reading</a>");
infoWnd.open(mapCanvas, marker);
});
return marker;
}
这与CSV的伟大工程文件,其中每个传感器名称/位置是独一无二的。 我正在尝试扩展此功能,以支持在CSV文件中存储多个条目的相同传感器,并且只为每个传感器的最新条目创建一个标记/按钮。
我相信推荐这样做的方法是保留一个标记数组,每次创建一个标记我都应该与这个数组进行比较。 我对Javascript和谷歌地图很陌生,我不确定这个检查应该在哪里进行。我玩弄了一些可能性,但似乎没有任何工作。
有什么建议吗?
这非常有帮助。谢谢。 我对JavaScript很新颖,不知道因为in的速度慢得多,我肯定会做出这样的改变。 – lrich
当我真的(正如您指出的那样)尝试更新标记时,我过于复杂化了,我只需要从下往上工作,忽略重复的传感器名称。这很好。 – lrich