在将标记添加到 map 之前,我正在尝试检查标记是否已存在于我的边界中。我发现最好的方法是使用
map.getBounds().contains(marker.getPosition())
如果标记存在于 map 上则返回 true,否则返回 false。所以在 false 上,我将标记添加到 map 上。
这工作正常,但我有多个边界,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);
}
}
最佳答案
您可以创建所有这些 LatLngBounds 的 1 个多边形。
多边形支持多个路径,因此您所要做的就是创建一个数组,其中包含每个 LatLngBounds 的数组,其中 LatLngs 由 LatLngBounds 的 4 个顶点定义,并将该数组应用于多边形的路径属性。
此多边形现在可以与 google.maps.geometry.poly.containsLocation 一起使用以确定某个位置是否位于任何 LatLngBounds 内。
关于javascript - Google Maps API 检查标记是否存在于多个边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17253929/