var polygon = new GPolygon(polylines[0],"#FFFFFF", 1, 1.0, color,opacity);
polygon.hid = this.id;
polygon.heat = this.heat;
google.maps.event.addListener(polygon, 'click', function(point) {
HoodsUnselect(active_hood_id);
active_hood_id = polygon.hid;
polygon.setOptions({fillColor: '#2948e4', fillOpacity: 0.50 });
//polygon.setFillStyle( { color:'#2948e4',opacity:'0.50' } );
if (point) {
map.openInfoWindowHtml(point, the_list); // open info window where user clicked
} else {
map.openInfoWindowHtml(polygon.getBounds().getCenter(), the_list); // open info window at the center of polygon
}
});
答案 0 :(得分:15)
除了Tony's answer之外,v3 API中没有openInfoWindowHtml()
方法。您必须创建一个InfoWindow
对象,您可以在其上调用open()
或close()
方法。如果您只希望同时显示一个InfoWindow
对象,通常只需要一个var infoWindow = new google.maps.InfoWindow();
google.maps.event.addListener(yourOverlay, 'click', function () {
infoWindow.setContent('Some info on yourOverlay');
infoWindow.open(map);
});
对象:
InfoWindow
在信息窗口中,v2 API和v3 API之间的主要区别在于,在v3 API中,您可以同时打开多个信息窗口。这在v2 API中是不可能的。要打开多个Info窗口,您需要创建多个var bermudaTriangle = new google.maps.Polygon({
paths: [
new google.maps.LatLng(25.774252, -80.190262),
new google.maps.LatLng(18.466465, -66.118292),
new google.maps.LatLng(32.321384, -64.75737)
],
strokeColor: "#FF0000",
strokeOpacity: 0.8,
strokeWeight: 3,
fillColor: "#FF0000",
fillOpacity: 0.35
});
bermudaTriangle.setMap(map);
个对象,而不是只创建一个所有标记(叠加层)。
对于多边形,这是如何在v3 API中创建多边形(借用示例mentioned by @Tony):
{{1}}
答案 1 :(得分:2)
GPolyline的v3等效值为Polyline,GPolygon为Polygon。这两个都有你可以听的点击事件。
更好的是,Google提供Polyline examples和Polygon examples,包括one that listens for clicks and opens an infowindow。