2013-02-27 61 views
7

我目前正在为我们正在处理的网站构建“搜索区域”功能。有点像Rightmove如何使用Google Maps API跟踪事件对多边形的更改

除了跟踪事件对多边形变化(设置新点和改变现有点)的能力之外,我已经启动了所有功能。我需要能够将提交的坐标发布到表单中。

我试过谷歌代码文档editing events。每次我尝试它时,我都会收到一条关于'set_at'的消息不可能或者我的对象没有被定义。

我想我知道有点不对是没有穿过新google.maps.event.addListener(thePolygon, 'set_at', function() { // grab paths for infoWindow grabPaths(thePath); });

thePolygon变量,但我不知道为什么。这是一个全球变量。或者不是?

所以,问题是,如何跟踪多边形的更改以将更新的坐标传递到我的表单?

非常感谢所有帮助。

这里是我目前拥有的代码:

var mapOptions = { 
    // options 
}; 

var map = new google.maps.Map(document.getElementById('map'), mapOptions); 

var drawingManager = new google.maps.drawing.DrawingManager({ 
    drawingMode: google.maps.drawing.OverlayType.POLYGON, 
    drawingControl: false, 
    polygonOptions: { 
    // drawing options 
    } 
}); 

drawingManager.setMap(map); 

google.maps.event.addListener(drawingManager, 'polygoncomplete', function(polygon) { 
    // complete functions 
}); 

google.maps.event.addListener(thePolygon, 'set_at', function() { 
    // complete functions 
}); 

google.maps.event.addListener(thePolygon, 'insert_at', function() { 
    // complete functions 
}); 

回答

22

这些事件为MVCArray,因此定义,折线是不是都是MVCArray。您必须观察折线(这是一个MVCArray)的path的事件。此外,您不能将侦听器添加到尚未创建的对象。多边形不polygoncomplete之前,所以你必须添加侦听器的polygoncomplete回调中:

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

    // complete functions 

    google.maps.event.addListener(thePath, 'set_at', function() { 
    // complete functions 
    }); 

    google.maps.event.addListener(thePath, 'insert_at', function() { 
    // complete functions 
    }); 

}); 
+0

哈哈,作品一种享受。我很亲密,但迄今为止。谢谢你的帮助。非常感谢。这是抓住了我无法理解的路径变化。但它非常简单。 – 2013-03-01 10:14:39

+0

请参阅http://stackoverflow.com/questions/12515748/event-after-modifying-polygon-in-google-maps-api-v3 – jjwdesign 2013-12-17 15:19:34

+5

使用'polygon.getPath()'而不是'thePath' – 2013-12-19 13:25:07

相关问题