2014-01-16 158 views
0

我一直在研究Google地图项目,该项目允许您在地图上绘制边界(多边形)并将其保存。然后将其保存到数据库,页面刷新并将信息拉回到地图上。Google Maps API v3禁用标记

我从其他用户的帖子中找到了下面的代码,并根据我的需要调整它,直到您从数据库中绘制多边形为止。

google.maps.event.addDomListener(drawingManager, 'polygoncomplete', function(polygon) { 
    polygon.setEditable(true); 
    google.maps.event.addListener(polygon.getPath(), 'set_at', function() { 
     document.getElementById("coordsField").value = updateArray(polygon); 
    }); 
    google.maps.event.addListener(polygon.getPath(), 'insert_at', function() { 
     document.getElementById("coordsField").value = updateArray(polygon); 
    }); 
}); 

代码创建一个等待多边形完成的侦听器。然后它将多边形设置为可编辑,并创建两个更多的侦听器。第一个等待一个当前点被更新,第二个等待一个新的点被创建,然后它们都会更新一个包含所有点的数组,并在触发时将它保存到一个隐藏的域中。

此代码完美地用于创建新的多边形,但是当从数据库创建多边形时,这是另一回事。当侦听器等待多边形完成时,它不会自动触发,因为它是自动执行的。我试图去除包装:

google.maps.event.addDomListener(drawingManager, 'polygoncomplete', function(polygon) {} 

,并添加更新的听众,但是我得到一个错误“多边形未定义”。有人能够解释如何解决这个问题吗?

+0

如何创建从一个数据库中的多边形? –

回答

1

触发polygoncomplete事件的DrawingManager会和自动创建的多边形实例作为参数传递给回调(的trigger第三个参数):

polygonInstance = new google.maps.Polygon(/*options*/); 

google.maps.event.trigger(drawingManager, 
         'polygoncomplete', 
          polygonInstance);