Javascript 在google地图中查找某个点上的对象
我正在使用多边形和圆在谷歌地图中添加感兴趣的区域。 在每个多边形和圆中,我都添加了一个ID,这样,如果用户单击多边形或圆,我就可以获得该区域的详细信息。 有两个区域重叠的情况。通过单击公共区域,我可以获取“上方”对象的ID,但无法获取“下方”对象的ID。下面给出了一个例子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
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呃,你的方法是正确的(可能是唯一的一种),我在问题中没有提到我不是在寻找一个几何解决方案,考虑到设备依赖电池,不喜欢“繁重”的计算。如果没有其他方法,我会选择你的答案为正确。