Javascript 在google地图中查找某个点上的对象

Javascript 在google地图中查找某个点上的对象,javascript,google-maps,overlap,Javascript,Google Maps,Overlap,我正在使用多边形和圆在谷歌地图中添加感兴趣的区域。 在每个多边形和圆中,我都添加了一个ID,这样,如果用户单击多边形或圆,我就可以获得该区域的详细信息。 有两个区域重叠的情况。通过单击公共区域,我可以获取“上方”对象的ID,但无法获取“下方”对象的ID。下面给出了一个例子 function drawpolygonExersice(res, ExerciseID){ var points = new Array(); var ptn; for (var j=0;j<res.le

我正在使用多边形和圆在谷歌地图中添加感兴趣的区域。 在每个多边形和圆中,我都添加了一个ID,这样,如果用户单击多边形或圆,我就可以获得该区域的详细信息。 有两个区域重叠的情况。通过单击公共区域,我可以获取“上方”对象的ID,但无法获取“下方”对象的ID。下面给出了一个例子

function drawpolygonExersice(res, ExerciseID){
  var points = new Array();
  var ptn;

  for (var j=0;j<res.length/2;j++)
    {ptn = new google.maps.LatLng(res[2*j],res[2*j+1]);
      points.push(ptn);}
  var polygonExercise = new google.maps.Polygon({
    path: points,
    geodesic: true,
    strokeColor: 'red',
    strokeOpacity: 0.8,
    strokeWeight: 1,
    fillColor: "red",
    fillOpacity: 0.20,
    ID: ExerciseID,  //look up ID
    map: map
  });
   google.maps.event.addListener(polygonExercise, 'click', function(event) {
     alert(this.ID);
   });
  exerciseAreas.push(polygonExercise);  
}

function drawcircleExersice(res, ExerciseID) {

  var circleExercise = new google.maps.Circle ({
      center: new google.maps.LatLng(res[0],res[1]),
      radius: res[2] * 1852, //Nautical miles to meters
      geodesic: true,
      strokeColor: 'red',      
      strokeOpacity: 0.8,
      strokeWeight: 1,
      fillColor:'red',
      fillOpacity: 0.20,
      ID: ExerciseID,  //look up ID
      map: map
    });

   google.maps.event.addListener(circleExercise, 'click', function(event) {
     alert(this.ID);
   });
   exerciseAreas.push(circleExercise);
}

有没有办法获取重叠对象的ID

下面给出了创建多边形和圆的代码

function drawpolygonExersice(res, ExerciseID){
  var points = new Array();
  var ptn;

  for (var j=0;j<res.length/2;j++)
    {ptn = new google.maps.LatLng(res[2*j],res[2*j+1]);
      points.push(ptn);}
  var polygonExercise = new google.maps.Polygon({
    path: points,
    geodesic: true,
    strokeColor: 'red',
    strokeOpacity: 0.8,
    strokeWeight: 1,
    fillColor: "red",
    fillOpacity: 0.20,
    ID: ExerciseID,  //look up ID
    map: map
  });
   google.maps.event.addListener(polygonExercise, 'click', function(event) {
     alert(this.ID);
   });
  exerciseAreas.push(polygonExercise);  
}

function drawcircleExersice(res, ExerciseID) {

  var circleExercise = new google.maps.Circle ({
      center: new google.maps.LatLng(res[0],res[1]),
      radius: res[2] * 1852, //Nautical miles to meters
      geodesic: true,
      strokeColor: 'red',      
      strokeOpacity: 0.8,
      strokeWeight: 1,
      fillColor:'red',
      fillOpacity: 0.20,
      ID: ExerciseID,  //look up ID
      map: map
    });

   google.maps.event.addListener(circleExercise, 'click', function(event) {
     alert(this.ID);
   });
   exerciseAreas.push(circleExercise);
}
函数drawpolygonExersice(res,ExerciseID){
var points=新数组();
var-ptn;

对于(var j=0;j,我看到的唯一方法是迭代所有形状,并(通过几何体库)计算形状是否包含单击的板条。预期的形状数量应该不会有问题


对于圆,请使用
.computedDistanceBeween(单击Latling,circle.getCenter())
,当结果为
时,将在地图上绘制多少这些形状?必须检查所有覆盖的边界visible@Dr.Molle10-40个形状将出现在地图上,这取决于搜索条件。我不是在寻找几何解决方案,而是考虑到设备依赖电池,不喜欢“繁重”的计算。Altho呃,你的方法是正确的(可能是唯一的一种),我在问题中没有提到我不是在寻找一个几何解决方案,考虑到设备依赖电池,不喜欢“繁重”的计算。如果没有其他方法,我会选择你的答案为正确。