Javascript 谷歌地图V3绘制多边形并打开信息窗口
我正在动态绘制一个多边形,并单击“多边形”以打开信息窗口。。我正在成功地绘制多边形,但单击“信息窗口”似乎没有成功。不给一个错误只是看起来不像 这是我所有的代码Javascript 谷歌地图V3绘制多边形并打开信息窗口,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我正在动态绘制一个多边形,并单击“多边形”以打开信息窗口。。我正在成功地绘制多边形,但单击“信息窗口”似乎没有成功。不给一个错误只是看起来不像 这是我所有的代码 function ADD_EVENT_FOR_POLYLINE_AND_POLYGON () { GLOBALS.PolyGonPath = new google.maps.MVCArray; GLOBALS.PolyGon = new google.maps.Polygon
function ADD_EVENT_FOR_POLYLINE_AND_POLYGON () {
GLOBALS.PolyGonPath = new google.maps.MVCArray;
GLOBALS.PolyGon = new google.maps.Polygon({
strokeWeight: 3,
fillColor: '#5555FF'
});
GLOBALS.PolyGon.setMap(GLOBALS.Map);
google.maps.event.addListener(GLOBALS.Map, 'click', DRAW_POLYGON);
}
function DRAW_POLYGON(event) {
GLOBALS.PolyGonPath.insertAt(GLOBALS.PolyGonPath.length, event.latLng);
var marker = new google.maps.Marker({
position: event.latLng,
map: GLOBALS.Map,
draggable: true
});
GLOBALS.PolyMarkers.push(marker);
marker.setTitle("#" + GLOBALS.PolyGonPath.length);
google.maps.event.addListener(marker, 'click', function () {
marker.setMap(null);
for (var i = 0, I = GLOBALS.PolyMarkers.length; i < I && GLOBALS.PolyMarkers[i] != marker; ++i);
GLOBALS.PolyMarkers.splice(i, 1);
GLOBALS.PolyGonPath.removeAt(i);
});
google.maps.event.addListener(marker, 'dragend', function () {
for (var i = 0, I = GLOBALS.PolyMarkers.length; i < I && GLOBALS.PolyMarkers[i] != marker; ++i);
GLOBALS.PolyGonPath.setAt(i, marker.getPosition());
});
**Here is I am adding a method to polygon for infowindow**
GLOBALS.PolyGon.setPaths(new google.maps.MVCArray([GLOBALS.PolyGonPath]));
google.maps.event.addListener(GLOBALS.PolyGon, 'click', SHOW_INFO);
},
function SHOW_INFO (event) {
var infowin = new google.maps.InfoWindow();
var vertices = GLOBALS.PolyGon.getPath();
var contentString = "<b>Test</b><br />";
for (var i = 0; i < vertices.length; i++) {
var xy = vertices.getAt(i);
contentString += "<br />" + "Coordinats: " + i + "<br />" + xy.lat() + "," + xy.lng();
}
infowin = new google.maps.InfoWindow();
infowin.setContent(contentString);
infowin.setPosition(event.latLng);
infowin.open(GLOBALS.Map, this);
}
函数为多段线和多边形添加事件{
GLOBALS.PolyGonPath=新的google.maps.MVCArray;
GLOBALS.PolyGon=新建google.maps.PolyGon({
冲程重量:3,
填充颜色:“#5555FF”
});
GLOBALS.PolyGon.setMap(GLOBALS.Map);
google.maps.event.addListener(GLOBALS.Map,'click',DRAW_POLYGON);
}
函数绘制多边形(事件){
GLOBALS.PolyGonPath.insertAt(GLOBALS.PolyGonPath.length,event.latLng);
var marker=new google.maps.marker({
位置:event.latLng,
地图:全球地图,
德拉格布尔:是的
});
球形。多标记。推(标记);
marker.setTitle(“#”+GLOBALS.PolyGonPath.length);
google.maps.event.addListener(标记,'click',函数(){
marker.setMap(空);
对于(变量i=0,i=GLOBALS.polymarkets.length;i”;
对于(var i=0;i“+xy.lat()+”,“+xy.lng()”; } infowin=new google.maps.InfoWindow(); setContent(contentString); infowin.setPosition(event.latLng); infowin.open(GLOBALS.Map,this); }
尝试将
SHOW\u INFO
功能中的最后一行代码更改为:
infowin.setPosition(event.latLng); //Leave this line
infowin.open(GLOBALS.Map, this);
致:
infowin.open
的第二个参数是可选的MVCObject
参数,带有一个publicposition
属性,用作锚点。在本例中,您不需要提供锚,因为您已经调用了infowin.setPosition
方法,并传递了google.maps.LatLng
。从google.maps.InfoWindow
对open
方法的描述:
在给定地图上打开此信息窗口。也可以选择使用信息窗口
与锚联系在一起。在核心API中,唯一的锚点是
标记类。但是,锚点可以是公开
position属性和(可选)用于计算
像素偏移(请参见信息窗口选项)。锚点是偏移量
从锚的位置到信息窗口的顶端
ıdear infowin.open(GLOBALS.Map);但它是一样的。。似乎没有打开窗口。。我点击地图三次,并为多段线和多边形函数三次调用添加事件。并绘制三角形(多边形),在这里ı向polygon google.maps.event.addListener(GLOBALS.polygon,'click',SHOW_INFO)添加了一个事件(三次);我认为这是错误的。。ı如何修复?
infowin.setPosition(event.latLng); //This line stays the same
infowin.open( GLOBALS.Map );