Google Map API - 使用getMap()或setMap()

时间:2016-03-03 23:47:48

标签: javascript google-maps google-maps-api-3

我试图有一个可以打开和关闭多个圆圈的按钮(显示/隐藏可见性)。假设我只有一个html按钮,并且我已经将google.maps.event.addDomListener添加到该按钮,我见过的很多例子都使用setMap()来确定圆圈是否已经存在。

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

然而,这只会移除圆圈,但再次单击按钮时不会将其添加回来。如果圆不是NULL并且如此评估,那么我将圆设置为null。如何在第二次单击按钮时循环.setMap()!= null应该为false,但它只是继续运行if语句而不是else。

我能够通过使用getMap()代替它来修复它。

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

getMap()到底在做什么?为什么当我在很多例子中看到它时(即使对于折线和矩形),getMap()!= null不工作???

我的第二个问题是,这是正确的方法吗?或者我将填充和描边不透明度设置为0会更好吗?另外我通过使用setMap(null)来隐藏圆圈和setMap(map)来显示它的方式,地图如何知道用于重新添加/显示圆圈的参数?我问这是因为我的圆圈zindex会强制它们在我绘制的一些折线下方,但是当我隐藏圆圈而不是再显示它时,它是在折线的顶部但仍然是正确的尺寸和位置?

感谢任何煽动!

1 个答案:

答案 0 :(得分:1)

将map-property设置为$(function() { var pageScan = { speed : 10000, loop : true, delayRestart : 1000, start : function(){ pageHeight = $('body').height() - window.innerHeight; pageScan.proc(pageHeight); }, proc : function(to){ $("body").animate( {scrollTop: to}, pageScan.speed, "linear", function(){ if (pageScan.loop) { setTimeout(function() { window.scrollTo(0, 0); pageScan.start(); }, pageScan.delayRestart); } }); } }; pageScan.start(); });

时,

getMap()仅返回null

如果您未设置map-property,则会返回null

只需检查undefined的returnValue是否评估为getMap()true

false

与第二个问题相关:

而不是if(circle.getMap()){ circle.setMap(null); }else{ circle.setMap(map); } 使用setMap来显示/隐藏形状:

setVisible