CSV ファイルを解析し、線をマップ上のマーカーに変換して、対応するボタンをサイドバーに表示しています。
マーカーを作成する現在の方法は
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 と Google マップにまったく慣れていないため、このチェックをどこで行うべきか正確にはわかりません。私はいくつかの可能性をいじりましたが、どれもうまくいかないようです。
何かアドバイス?