在开发此解决方案时,我了解到API V2已被弃用。我从那时起就开始使用API V3了。这项正在进行的工作可以在My New Map找到。特别感谢David Marland在Hammerspace为我加速转换。
我要解决剩下的3个问题......我将在这篇文章中论述第一个问题。
我无法触发我定义的信息窗口:
google.maps.event.addListener(polyline, 'click', function(event) {
if (polyline.Contains(event.latLng)) {
infowindowInside.open(map,polyline);
} else {
infowindowOutside.open(map,polyline);
}
});
我将它们附加到多边形......而不是标记。写入多边形:
var path = [
new google.maps.LatLng(35.950079, -84.104977),
new google.maps.LatLng(35.950774, -84.049702),
new google.maps.LatLng(35.946883, -84.047813),
new google.maps.LatLng(35.945354, -84.045067),
new google.maps.LatLng(35.940907, -84.042149),
new google.maps.LatLng(35.930483, -84.037857),
new google.maps.LatLng(35.939656, -84.037857),
new google.maps.LatLng(35.928120, -84.076309),
new google.maps.LatLng(35.938822, -84.066868),
new google.maps.LatLng(35.950079, -84.104977)];
var polyline = new google.maps.Polygon({path:path, strokeColor: "#FF0000", strokeOpacity: 1.0, strokeWeight: 2, clickable:false});
polyline.setMap(map);
我感谢您提供的任何指导。
谢谢。
** 更新 * ** * * < /强>
我现在已将代码修改为:
google.maps.event.addListener(polyline, 'click', function(event) {
if (polyline.ContainsLocation(event.latLng, polyline)) {
window.alert('inside');//infowindowInside.open(map,polyline);
} else {
window.alert('outside');//infowindowOutside.open(map,polyline);
}
});
然而......仍然没有触发器。
答案 0 :(得分:2)
可能是因为Polygon
没有“包含”功能。您应该查看使用具有Geometry Library功能的Google Maps API containsLocation。
答案 1 :(得分:1)
Google maps api v3不允许您向折线或多边形添加infowindows。解决这个问题的方法是获取鼠标点击的lat / lng坐标,并将信息窗口(用户点击他/她的鼠标)附加到地图上,如:
google.maps.event.addListener(polyline, 'click', function(event) {
if (polyline.Contains(event.latLng)) {
infowindowInside.open(map);
} else {
infowindowOutside.open(map);
}
});
(注意.open()方法中没有第二个参数)
否则你可以找出多边形中心或其中一个角的纬度/经度并将信息附加到那里(但是到地图上)
这将允许您显示infowindow,同时使其显示为连接到多边形。
编辑:另外 - 正如mano标记所述.Contains - 我不确定该方法是否存在,所以即使从第二个参数中删除了第二个参数,你所拥有的代码块仍然可能无效。 open()方法。如果是这种情况,您可能必须采用不同的逻辑方法,但将标记附加到地图而不是多边形或折线将解决您的主要问题。