gpt4 book ai didi

javascript - 在谷歌地图中查找某个点的对象

转载 作者:行者123 更新时间:2023-11-28 07:40:44 24 4
gpt4 key购买 nike

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

enter image description here

有没有办法获取重叠对象的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);
}

最佳答案

我看到的唯一方法是迭代所有形状并计算(通过几何库)形状是否包含单击的经纬度。预期的形状数量应该不成问题。

对于圆形,请使用 .computeDistanceBetween(clickedLatLng,circle.getCenter()) ,当结果为<=circle.getRadius()时,点击已在圆圈上。

对于多边形使用.containsLocation(clickedLatLng,polygon) ,当它返回true时单击已在多边形上。

演示:http://jsfiddle.net/doktormolle/qotg0o2x/

关于javascript - 在谷歌地图中查找某个点的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28052593/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com