从谷歌地图中删除HeatmapLayer
我正在使用HeatmapLayer api https://developers.google.com/maps/documentation/javascript/layers#JSHeatMaps
我像这样生成热图:
heatmap = new google.maps.visualization.HeatmapLayer({ data: heatmapData, radius: 50 }); heatmap.setMap(google_map);
当我想使用与上面相同的function显示另一个热图时(我正在使用ajax并且我有新标记要显示,所以我也需要更改热图)热图图层保留在地图上,在这种情况下我在我的地图上有2个重叠的热图。 我怎样才能首先删除当前的热门播放器?
这是我的演示代码,如果你点击地图下方的链接,就会添加热图,再次点击它,它应该删除它,但它只是一遍又一遍地重复:
http://jsfiddle.net/LpL3P/
文档建议您可以通过调用heatmap.setMap(null)
来删除图层
更新
在你的jsfiddle中,你在每个click
事件的范围内声明了你的heatmap变量。 为了使代码工作,我将heatmap
变量全局heatmap
,然后检查以确保新的heatmap
不会覆盖现有的heatmap
。
这是你更新的jsfiddle
对于在原始post后几年寻找解决方案的其他人,我发现以下工作。 首先将变量声明为将保存热图MVCObject的全局变量。
var mvcObj;
然后,在用于添加热图的function中
if( typeof( mvcObj )=='object' ) mvcObj.clear(); /* locations is an array of latlngs */ mvcObj = new google.maps.MVCArray( locations ); /* this.map is a reference to the map object */ var heatmap = new google.maps.visualization.HeatmapLayer({ data: mvcObj, map: this.map });
看一下google JSHeatMaps的文档。
看看这个例子 。 您可以查看切换按钮的逻辑。
heatmap.setMap(null)
使用heatmap.setMap(null)
只会隐藏热图图层。 如果您稍后键入heatmap.setMap(map)
,您将再次看到您的热图图层,因此它并未真正被删除。
要删除数据,您必须执行以下步骤。
heatmap.setMap(null)
//这将隐藏热图图层
heatmap.getData().j = [];
//这实际上是将坐标数组设置为零。
heatmap.setMap(map)
//现在,当您切换回地图时,加热层消失了,您可以创建一个新的加热层。
希望这可以帮助。 我花了一段时间来搞清楚,但它确实奏效了。