2016-03-03 174 views
-1

评估圈我试图让一个按钮可以打开和关闭多个圆圈(显示/隐藏可见性)。假设我只有一个html按钮,并且我已经为该按钮添加了一个google.maps.event.addDomListener,我看过很多示例都使用setMap()来确定该圆是否已经存在。Google Map API - 使用getMap()或setMap()

if(circle.setMap() != null){ 
    circle.setMap(null); 
}else{ 
    circle.setMap(map); 
} 

但是,这仅删除圈,但一旦按钮被再次点击将不添加回来。如果圆不为NULL并且像这样计算,那么我将圆设置为null。这是怎么回事,第二次点击按钮circle.setMap()!= null应该是false,但它只是继续运行if语句而不是else。

我能够用的GetMap(解决它)代替..

if(circle.getMap() != null){ 
    circle.setMap(null); 
}else{ 
    circle.setMap(map); 
} 

到底是什么的GetMap()在做什么?为什么当我在很多例子中看到它时(即使是多段线和矩形)都会得到map()!= null NOT work?

我的第二个问题是,这是否是正确的方法来做到这一点?或者我会更好,只需将填充和描边不透明度设置为0?同样,我通过使用setMap(null)来隐藏circle和setMap(map)来显示它,我已经完成了上面的操作,地图如何知道用于重新添加/显示圆的参数?我问这是我的zindex为圆圈强制它们在我绘制的一些多段线下方,但是当我隐藏圆圈而不是再次显示它时,它位于多段线的顶部,但仍然是正确的大小和位置?

谢谢你的任何煽动!

回答

0

getMap()只有当您设置地图属性null

如果不设置地图属性返回undefined

简单检查的getMap()的评估的returnValue到truefalse返回null

if(circle.getMap()){ 
    circle.setMap(null); 
}else{ 
    circle.setMap(map); 
} 

与第2个问题相关:

代替setMap使用setVisible显示/隐藏形状:

if(circle.getVisible()){ 
    circle.setVisible(false); 
}else{ 
    circle.setVisible(true); 
} 
+0

哦确定,所以的setMap()对于一个给定圆实际设置的GetMap()的值?为什么这么多的例子使用setMap()而不是getMap()来检查圆是否已经存在?正如if(setMap()!= nuill){do stuff} – GifCo

+0

我不知道哪些示例使用'setMap'来检查一个圆是否存在.... setMap'不返回任何内容,所以它不适合检查任何东西。这只是一个设置方法。 –