Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌地图V3绘制多边形并打开信息窗口_Javascript_Google Maps_Google Maps Api 3 - Fatal编程技术网

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”+”坐标:“+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
参数,带有一个public
position
属性,用作锚点。在本例中,您不需要提供锚,因为您已经调用了
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 );