在 google 地图中的某个点查找对象
Find objects at a point in google maps
我正在使用多边形和圆形在 google 地图中添加感兴趣的区域。
在每个多边形和圆形中,我添加了一个 ID,以便在用户单击多边形或圆形时获得有关该区域的详细信息。
存在两个区域重叠的情况。通过单击公共区域,我可以获得 "above" 对象的 ID,但我无法获取位于 "below" 的对象的 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);
}
我看到的唯一方法是遍历所有形状并计算(通过几何库)形状是否包含单击的 latLng。预期的形状数量应该没有问题。
圆圈使用.computeDistanceBetween(clickedLatLng,circle.getCenter())
,当结果为<=circle.getRadius()
时,点击已经在圆圈上。
对于多边形,使用 .containsLocation(clickedLatLng,polygon)
,当它 returns true
点击已在多边形上。
我正在使用多边形和圆形在 google 地图中添加感兴趣的区域。 在每个多边形和圆形中,我添加了一个 ID,以便在用户单击多边形或圆形时获得有关该区域的详细信息。 存在两个区域重叠的情况。通过单击公共区域,我可以获得 "above" 对象的 ID,但我无法获取位于 "below" 的对象的 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);
}
我看到的唯一方法是遍历所有形状并计算(通过几何库)形状是否包含单击的 latLng。预期的形状数量应该没有问题。
圆圈使用.computeDistanceBetween(clickedLatLng,circle.getCenter())
,当结果为<=circle.getRadius()
时,点击已经在圆圈上。
对于多边形,使用 .containsLocation(clickedLatLng,polygon)
,当它 returns true
点击已在多边形上。