マーカーをマップに追加する前に、境界にマーカーが既に存在するかどうかを確認しようとしています。これを行う最善の方法は、
map.getBounds().contains(marker.getPosition())
マーカーがマップ上に存在する場合は true を返し、存在しない場合は false を返します。false の場合は、マーカーをマップに追加します。
これは正常に機能しますが、複数の境界があり、map.getBounds()
1 つの境界を取得しているようです。
以下のコードは、ループ内の各境界にマーカーを設定しますが、マーカーが 1 つの境界だけに存在するかどうかを確認します。すべての境界にマーカーが存在するかどうかを確認するにはどうすればよいですか?
最後の関数でマーカーをチェックしています。
function findPlaces() {
var boundsArray = new Array(); //my array of multiple boundaries
for (var i = 0; i < boundsArray.length; i++) {
var boundary = boundsArray[i];
// Perform search over this boundary
var request = {
bounds: boundary,
keyword: document.getElementById("keyword").value
};
service.nearbySearch(request, callback);
}
});
}
//Returns places and create markers
function callback(results, status) {
if (status == google.maps.places.PlacesServiceStatus.OK) {
for (var i = 0; i < results.length; i++) {
createMarker(results[i]);
}
}
//create markers
function createMarker(place) {
var marker = new google.maps.Marker({
position: place.geometry.location
});
var onMap = map.getBounds().contains(marker.getPosition());
//if marker is not on the map, add it
if (onMap === false) {
marker.setMap(map);
}
}