繁体   English   中英

GOOGLE MAP API v3,需要路径的多边形

[英]GOOGLE MAP API v3, Need polygon of a path

我正在使用谷歌地图v3,我的问题是我在一张地图上有200多个多边形,它们都是可编辑的,我需要在事件监听器中进行ajax调用以进行更改,使用路径而不是多边形来检测变化。

所以在回调函数this = polygon.getPath()中,我怎样才能得到它所属的多边形。 在多边形中,我使用set来设置ajax调用所需的信息。

    poly1.set('name', 'poly1');
    poly1.set('id', 1);

    google.maps.event.addListener(poly1, 'dragend', setNewArea);
    google.maps.event.addListener(poly1.getPath(), 'insert_at', setNewArea);
    google.maps.event.addListener(poly1.getPath(), 'remove_at', setNewArea);
    google.maps.event.addListener(poly1.getPath(), 'set_at', setNewArea);

所以在setNewArea中,我可以很容易地检查它,看看它是poly还是路径,但是如果它是路径,我无法获得它的父poly。 我不希望有200个自定义回调只是为了硬编码poly,必须有一个更清洁的方式。

一种方法是将poly1的对象引用添加到指定的回调中。 下面是我使用maps API编写的一些代码,它为打开信息窗口的特定标记上的click事件添加了一个监听器。

var latLng = new google.maps.LatLng(lat,lng);

var marker = new google.maps.Marker({
    position: latLng,
    map: window.map,
    title: pinName
});

var infoWindow = new google.maps.InfoWindow({
    content: content
});

google.maps.event.addListener(marker, 'click', function() {
    infoWindow.open(window.map, marker);
});

因此,对于您的示例,您可能希望执行类似下面的操作。 这将确保您的回调函数获取对多边形对象的引用,即使触发事件与路径相关也是如此。

poly1.set('name', 'poly1');
poly1.set('id', 1);

google.maps.event.addListener(poly1, 'dragend', function() { 
    setNewArea(poly1); 
});
google.maps.event.addListener(poly1.getPath(), 'insert_at', function() { 
    setNewArea(poly1); 
});

您可以在对象之间进行循环引用。

var thePath = poly1.getPath();
thePath.parent = poly1;

google.maps.event.addListener(thePath, 'set_at', function () {
    console.log('My parent is the polygon', this.parent);
}.bind(this);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM