Javascript Google Maps API包含的位置未按预期工作

Javascript Google Maps API包含的位置未按预期工作,javascript,jquery,google-maps,google-maps-api-3,Javascript,Jquery,Google Maps,Google Maps Api 3,我正在尝试为一个网站创建一个属性搜索,用户可以在谷歌地图上绘制一个多边形,并显示边界内的相关属性 我有一组从数据库中的lat/lng定义创建的标记。多边形完成后,我循环遍历标记,并使用containsLocation与多边形进行比较。如果containsLocation返回false,我将从映射中删除该标记 不幸的是,这不起作用-许多在多边形之外很长一段距离的属性保持不变,我不知道为什么。我在下面介绍了我的JS,以及一个指向JSFIDLE的链接,您可以在其中看到这一点: jQuery(funct

我正在尝试为一个网站创建一个属性搜索,用户可以在谷歌地图上绘制一个多边形,并显示边界内的相关属性

我有一组从数据库中的lat/lng定义创建的标记。多边形完成后,我循环遍历标记,并使用containsLocation与多边形进行比较。如果containsLocation返回false,我将从映射中删除该标记

不幸的是,这不起作用-许多在多边形之外很长一段距离的属性保持不变,我不知道为什么。我在下面介绍了我的JS,以及一个指向JSFIDLE的链接,您可以在其中看到这一点:

jQuery(function() {
  map = new google.maps.Map(document.getElementById('search_map'), {
    zoom: 10,
    center: {lat: 53.1877837, lng: -2.890695400000027}
  });

  var markers = [];
  var properties = [
    {"lat":"53.19744","lng":"-2.90324"},{"lat":"53.20113","lng":"-2.88327"},{"lat":"53.19467","lng":"-2.89708"},{"lat":"53.19408","lng":"-2.90420"},{"lat":"53.19122","lng":"-2.86685"},{"lat":"53.19157","lng":"-2.87039"},{"lat":"53.19495","lng":"-2.90185"},{"lat":"53.19912","lng":"-2.90328"},{"lat":"53.19744","lng":"-2.89996"},{"lat":"53.19939","lng":"-2.90310"},{"lat":"53.19955","lng":"-2.90304"},{"lat":"53.18981","lng":"-2.89322"},{"lat":"53.19707","lng":"-2.89818"},{"lat":"53.19246","lng":"-2.86232"},{"lat":"53.19694","lng":"-2.89845"},{"lat":"53.19248","lng":"-2.87886"},{"lat":"53.19393","lng":"-2.90255"},{"lat":"53.19675","lng":"-2.89979"},{"lat":"53.19426","lng":"-2.90188"},{"lat":"53.28044","lng":"-2.89737"},{"lat":"53.27536","lng":"-2.93683"},{"lat":"53.16830","lng":"-3.08807"},{"lat":"53.17966","lng":"-2.90035"},{"lat":"53.27380","lng":"-2.89055"},{"lat":"53.20563","lng":"-2.92282"},{"lat":"53.20092","lng":"-2.89327"},{"lat":"53.19120","lng":"-2.86799"},{"lat":"53.18154","lng":"-2.88894"},{"lat":"53.19474","lng":"-2.88410"},{"lat":"53.19995","lng":"-2.89468"},{"lat":"53.19354","lng":"-2.88157"},{"lat":"53.21982","lng":"-2.88244"},{"lat":"53.20004","lng":"-2.89296"},{"lat":"53.19487","lng":"-2.87742"},{"lat":"53.19640","lng":"-2.88485"},{"lat":"53.22933","lng":"-2.95355"},{"lat":"53.21318","lng":"-2.87070"},{"lat":"53.20609","lng":"-2.92817"},{"lat":"53.19710","lng":"-2.87817"},{"lat":"53.18776","lng":"-2.89100"},{"lat":"53.19487","lng":"-2.87742"},{"lat":"53.17526","lng":"-2.91006"},{"lat":"53.19338","lng":"-2.88320"},{"lat":"53.18978","lng":"-2.86599"},{"lat":"53.19143","lng":"-2.88282"},{"lat":"53.19479","lng":"-2.88436"}
  ];

  for (var i = 0; i < properties.length; i++) {
    var markerPosition = new google.maps.LatLng(parseFloat(properties[i].lat), parseFloat(properties[i].lng));
    var marker = new google.maps.Marker({
      position: markerPosition,
      map: map
    });

    // Add it to the array
    markers.push(marker);
  }

  var drawingManager = new google.maps.drawing.DrawingManager({
    drawingMode: google.maps.drawing.OverlayType.POLYGON,
    drawingControl: false,
    drawingControlOptions: {
      drawingModes: ['polygon']
    }
  });
  drawingManager.setMap(map);

  google.maps.event.addListener(drawingManager, 'overlaycomplete', function(polygon) {
    for (var i = 0; i < markers.length; i++) {
      if (!google.maps.geometry.poly.containsLocation(markers[i].position, polygon.overlay)) {
        markers[i].setMap(null);
        markers.splice(i, 1);
      }
    }
    jQuery('#result').text(markers.length + ' properties found');
  });
 });
jQuery(函数(){
map=new google.maps.map(document.getElementById('search\u map'){
缩放:10,
中心:{lat:53.1877837,液化天然气:-2.890695400000027}
});
var标记=[];
变量属性=[
{“lat”:“53.20113”、“lng”:-2.88327”},{“lat”:“53.20113”、“lng”:-2.88327”},,{“lat”:“53.19467,”拉特”:“53.19467”,“lng”:““,,”LT““,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.89996“},{“lat”:“53.19939”,“液化天然气”:2.90310“,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,19426年,“液化天然气”:“-2.90188”},{“拉丁美洲”:53.28044,“lng”:-2.89737“,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,“},{”lat:“53.19474”,“lng:”-2.88410,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,“-2.92817”},{“lat”:“53.19710”,“液化天然气”“-2.87817”},{“拉特”:“53.18776”,“液化天然气”:-2.89100”},{“拉特”:“53.19487”,“液化天然气”:-2.87742”},{“拉特”:“53.17526”,“液化天然气”:-2.91006”},{“拉特”:“53.19338”,“液化天然气”:-2.88320”},{“拉特”:“53.18978”,“液化天然气”:-2.86599”},{“拉特”:“53.19143”,“液化天然气”:-2.88282”{
];
对于(var i=0;i


我已经将我的代码剥离到这个位置,但它仍然没有返回正确的标记。我也尝试过使用lat/lng对象而不是谷歌地图LatLng对象,但仍然没有成功——我不知道还能尝试什么

我将您的侦听器编辑为以下内容:

google.maps.event.addListener(drawingManager, 'overlaycomplete', function(polygon) {
var locationsFound = 0;
for (var i = 0; i < markers.length; i++) {
  if (!google.maps.geometry.poly.containsLocation(markers[i].position, polygon.overlay)) {
    markers[i].setMap(null);
    markers.splice(i, 0);
  } else if (google.maps.geometry.poly.containsLocation(markers[i].position, polygon.overlay)){
        locationsFound ++;
  }
}
$('#result').text(locationsFound + ' properties found');
});

错误:b未定义
google.maps.event.addListener(drawingManager, 'overlaycomplete', function(polygon) {
var locArray=[];
for (var i = 0; i < markers.length; i++) {
  if (!google.maps.geometry.poly.containsLocation(markers[i].position, polygon.overlay)) {
        markers[i].setMap(null);

  } else if (google.maps.geometry.poly.containsLocation(markers[i].position, polygon.overlay)){
        locArray.push(markers[i]);
  }
}
$('#result').text(locArray.length + ' properties found');
});