【问题标题】:Google Maps API check if marker exists in multiple boundsGoogle Maps API 检查标记是否存在于多个边界中
【发布时间】:2013-06-19 16:30:46
【问题描述】:

在将标记添加到地图之前,我正在尝试检查我的边界中是否已经存在标记。我发现最好的方法是使用

map.getBounds().contains(marker.getPosition()) 如果标记存在于地图上,则返回 true,否则返回 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);
    }
}

【问题讨论】:

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


    【解决方案1】:

    您可以创建所有这些 LatLngBounds 的 1 个多边形。

    Polygons 支持多个 Paths,因此您只需创建一个数组,该数组包含每个 LatLngBounds 一个数组,该数组的 LatLngs 由 LatLngBounds 的 4 个顶点定义,并将该数组应用于 Polygon 的路径属性。

    这个多边形现在可以与google.maps.geometry.poly.containsLocation 一起使用来确定一个位置是否位于任何 LatLngBounds 内。

    【讨论】:

      猜你喜欢
      • 2011-09-25
      • 1970-01-01
      • 1970-01-01
      • 2011-09-07
      • 2017-10-10
      • 2013-12-03
      • 2014-05-10
      • 2011-08-31
      • 2013-12-26
      相关资源
      最近更新 更多