Javascript Google Maps API v3重新绘制以前保存的可编辑和可选形状
我创建了一个应用程序,可以在地图上绘制形状,它们是可编辑的,可以选择 这是通过向图形管理器添加“OverlyComplete”侦听器和编写用于设置选定形状或清除选择或删除形状的函数来实现的:Javascript Google Maps API v3重新绘制以前保存的可编辑和可选形状,javascript,google-maps,maps,Javascript,Google Maps,Maps,我创建了一个应用程序,可以在地图上绘制形状,它们是可编辑的,可以选择 这是通过向图形管理器添加“OverlyComplete”侦听器和编写用于设置选定形状或清除选择或删除形状的函数来实现的: google.maps.event.addListener(drawingManager, 'overlaycomplete', function(e) { drawingManager.setDrawingMode(null); var shape = e.overla
google.maps.event.addListener(drawingManager, 'overlaycomplete', function(e) {
drawingManager.setDrawingMode(null);
var shape = e.overlay;
shape.type = e.type;
google.maps.event.addListener(shape, 'click', function() {
select(shape);
});
所有形状的详细信息都可以保存在数据库中。我现在需要用相同的形状重新创建地图,这些形状应该可以再次编辑。从数据库加载详细信息后,我重新创建了这些形状,但似乎无法为它们设置侦听器,以便使用与以前使用的相同功能。通过指定形状,可以简单地重新绘制形状,以便:
shape = new google.maps.Polygon({
map: map,
paths: paths,
zIndex: 90,
strokeWeight: 0,
fillColor: color,
fillOpacity: 0.65,
editable: true
});
以这种方式绘制形状后,它们是可编辑的,但我不能一次选择一个形状,例如,删除它。也就是说,这些形状不能用以前编写的函数进行操作
有没有办法设置侦听器?我找到了解决问题的方法。我保存的形状由循环绘制,并且始终有一个变量名,该变量名在循环运行时递增。因此,当循环运行时,我会在每个形状上设置贴图侦听器:
varString = "shape"+i;
//Output shape
window[varString] = new google.maps.Polygon({
map: map,
paths: paths,
zIndex: 90,
strokeWeight: 0,
fillColor: color,
fillOpacity: 0.65,
myIndex: i,
editable: true
});
google.maps.event.addListener(window[varString],"mouseout",function(){
path = this.getPath();
area = google.maps.geometry.spherical.computeArea(path);
alert("area");
});
现在,我可以在每个形状上设置相同的功能,用户可以像以前一样编辑它们,主要区别在于,现在不可能使用“选择”功能,所有形状都始终显示为“选择”(可以拖动的角点在所有形状上始终可见)