2014-02-11 109 views
1

因此,有很多关于如何删除谷歌地图多边形顶点的帖子。他们都没有为我工作 - 这可能是由于他们引用过时的API。我试图限制用户可以在多边形上创建的点数。如果他们创建的点数超过一定数量,我希望以编程方式触发Google地图中内置的“撤消”功能,或者删除最后创建的顶点。删除多边形的一个顶点谷歌地图API v3

当我创建初期多边形为用户的工作与我在添加此事件侦听器:

google.maps.event.addListener(myPolygon.getPath(), 'insert_at', function(event){ 
    var numPoints = myPolygon.getPath().length; 

    if(numPoints == 5){ 
    myPolygon.getPath().removeAt(4); 
    } 
}); 

这结束了从多边形移除点(不一定是最后一个点创建)。有时,它会导致以下错误:

Uncaught TypeError: Cannot read property 'b' of undefined.

我已经使用多边形“喀嗒”监听尝试,但是当用户创建了一个新的顶点click事件不火。只有当点击实际的多边形时才会触发。

回答

1

我猜你正在使用的路径,支持自动completition(第一经纬度不等于最后的经纬度)

似乎是一个错误,当您尝试从自动完成的路径删除最后一个经纬度。

这个错误并不妨碍你删除点,错误发生在稍后(我猜API何时更新可编辑多边形的UI)。 您可以简单地使用try/catch语句绕过此错误。

与被删除点的位置相关:新创建的点不会插入到路径的末尾,它将被插入放置它的点之间。 在point1(index 0)和point2(index 1)之间插入一个点时,新创建的点将具有索引1.

您可以使用回调的第一个参数来检索此索引。

摘要:


google.maps.event.addListener(myPolygon.getPath(), 'insert_at', function(index){ 
    if(this.getLength() > 4){ 
    try{ 
     this.removeAt(index); 
    }catch(e){} 
    } 
}); 
+0

这是我的问题。自动完成的多边形在删除点时不能正常工作,但只要最后一个点等于第一个点,它就可以正常工作。 http://jsbin.com/wipuv/2/edit不起作用,而http://jsbin.com/wipuv/3/edit确实起作用。 – carter

+0

对不起,我必须回来。如果第一个点等于最后一个点,如果有人选择在编辑过程中移动第一个或最后一个点,它仍然不起作用。例如我的链接中的三角形有4个点,当有人移动第一个/最后一个点,然后在它们之间插入一个新点时,会引发错误。 – carter

+0

我建议的修复方法没有错误:http://jsbin.com/wipuv/4/edit?js,output –

相关问题