Javascript 谷歌地图API V3信息窗口
在开发此解决方案时,我了解到API V2已被弃用。从那以后,我开始使用API V3开发一个版本。这项正在进行的工作可在以下网址找到。特别感谢David Marland为我加速了这一转变 我现在讨论剩下的3个问题,第一个问题我将在这篇文章中讨论 我无法触发我定义的信息窗口:Javascript 谷歌地图API V3信息窗口,javascript,google-maps-api-3,Javascript,Google Maps Api 3,在开发此解决方案时,我了解到API V2已被弃用。从那以后,我开始使用API V3开发一个版本。这项正在进行的工作可在以下网址找到。特别感谢David Marland为我加速了这一转变 我现在讨论剩下的3个问题,第一个问题我将在这篇文章中讨论 我无法触发我定义的信息窗口: google.maps.event.addListener(polyline, 'click', function(event) { if (polyline.Contains(event.latLng)) {
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);
}
});
但是..仍然没有触发器。可能是因为
Polygon
没有“contains”函数。您应该考虑使用Google Maps API,它有一个函数。可能是因为Polygon
没有“contains”函数。您应该考虑使用Google Maps API,它有一个函数。Google Maps API v3不允许您将信息窗口添加到多段线或多边形。解决方法是获取鼠标单击的纬度/高度坐标,并将信息窗口(用户单击鼠标的位置)附加到地图上,如:
google.maps.event.addListener(polyline, 'click', function(event) {
if (polyline.Contains(event.latLng)) {
infowindowInside.open(map);
} else {
infowindowOutside.open(map);
}
});
(注意.open()方法中没有第二个参数)
否则,您可以计算出多边形中心或其中一个角的纬度/高度,并将信息窗口附加到那里(但要附加到地图上)
这将允许您显示信息窗口,同时使其显示为与多边形相连
Edit:另外--正如mano marks所说的.Contains--我不确定该方法是否存在,因此即使从.open()方法中删除第二个参数,您的代码块也可能仍然无法工作。如果是这种情况,您可能需要采用不同的逻辑方法,但将标记附着到地图而不是多边形或多段线将解决您的主要问题。Google maps api v3不允许您将信息窗口添加到多段线或多边形。解决方法是获取鼠标单击的纬度/高度坐标,并将信息窗口(用户单击鼠标的位置)附加到地图上,如:
google.maps.event.addListener(polyline, 'click', function(event) {
if (polyline.Contains(event.latLng)) {
infowindowInside.open(map);
} else {
infowindowOutside.open(map);
}
});
(注意.open()方法中没有第二个参数)
否则,您可以计算出多边形中心或其中一个角的纬度/高度,并将信息窗口附加到那里(但要附加到地图上)
这将允许您显示信息窗口,同时使其显示为与多边形相连
Edit:另外--正如mano marks所说的.Contains--我不确定该方法是否存在,因此即使从.open()方法中删除第二个参数,您的代码块也可能仍然无法工作。如果是这样的话,您可能必须对逻辑采取不同的方法,但是将标记附着到地图而不是多边形或多段线将解决您的主要问题