javascript – 检查地图标记是否在选定范围内

前端之家收集整理的这篇文章主要介绍了javascript – 检查地图标记是否在选定范围内前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个带有各种标记的地图,我需要能够在地图上绘制一个矩形并选择矩形边界内的标记.

到目前为止,我在这里找到了一些很好的信息:How to get markers inside an area selected by mouse drag?

我已经实现了keymapzoom插件.像这样

$('#dispatcher').gmap3({action:'get'}).enableKeyDragZoom({
        BoxStyle: {
          border: "dashed black",//backgroundColor: "red",opacity: 0.5
        },paneStyle: {
          backgroundColor: "gray",opacity: 0.2
        }
  });
var dz = $('#dispatcher').gmap3({action:'get'}).getDragZoomObject();
google.maps.event.addListener(dz,'dragend',function (bnds) {
  alert(bnds);
});

这给了我以下内容
((lat,long),(lat,long))格式来自警报(bnds);

我需要知道我现在如何检查是否有任何标记

由于其他原因,我已经有一个存储标记的对象.喜欢:

markers[name] = {};
    markers[name].lat = lati;
    markers[name].lng = longi;

哪个可能有用?

我不明白如何使用GLatLngBounds和containsLatLng(latlng:GLatLng).

解决方法

您的问题是使用Maps API的v3版本标记的,因此我假设您使用的是该版本(您应该弃用v2).请注意,某些类和方法的命名与您的问题不同.

界限用LatLngBounds类表示.您可以对该类的实例执行contains方法,以确定某个点是否位于这些边界内.

如果您有一个包含所有标记的对象,则可以遍历它们并检查每个标记,例如:

var bounds = new google.maps.LatLngBounds(sw,ne);
for (var a in markers) {
    if (bounds.contains(new google.maps.LatLng(markers[a].lat,markers[a].lng)) {
        // marker is within bounds
    }
}

另外,在创建它们时,我会将LatLng对象存储在markers对象中.这样您就不必在任何需要的地方创建它们.

原文链接:https://www.f2er.com/js/158204.html

猜你在找的JavaScript相关文章