Javascript 只需单击一下,即可从谷歌地图中删除多个HeatmapLayer
我有一个按钮,可以将热图图层添加到我的地图中。当按下两次时。有两个热图层堆叠在一起。按delete heatmaplayer按钮时,仅删除1个heatmaplayer。为什么会这样?如何通过单击删除所有堆叠的热图 代码:Javascript 只需单击一下,即可从谷歌地图中删除多个HeatmapLayer,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我有一个按钮,可以将热图图层添加到我的地图中。当按下两次时。有两个热图层堆叠在一起。按delete heatmaplayer按钮时,仅删除1个heatmaplayer。为什么会这样?如何通过单击删除所有堆叠的热图 代码: 热图 创建热图 删除热图 var图、热图; 函数initMap(){ map=new google.maps.map(document.getElementById('map'){ 缩放:13, 中心:{lat:37.775,lng:-122.434}, mapTypeId:
热图
创建热图
删除热图
var图、热图;
函数initMap(){
map=new google.maps.map(document.getElementById('map'){
缩放:13,
中心:{lat:37.775,lng:-122.434},
mapTypeId:google.maps.mapTypeId.SATELLITE
});
}
函数createHeatmap(){
var热图数据=[
新的google.maps.LatLng(37.782551,-122.445368),
新google.maps.LatLng(37.782745,-122.444586),
新google.maps.LatLng(37.782842,-122.443688),];
heatmap=新建google.maps.visualization.HeatmapLayer({
数据:热图数据,
});
热图.设置图(map);
}
函数deleteHeatmap(){
heatmap.setMap(空);
}
在创建新的热图(无法访问原始热图)之前,您需要删除(从地图中删除)任何现有热图,或者只允许创建单个heapmap
代码片段:
var图、热图;
函数initMap(){
map=new google.maps.map(document.getElementById('map'){
缩放:13,
中心:{
拉脱维亚:37.775,
液化天然气:-122.434
},
mapTypeId:google.maps.mapTypeId.SATELLITE
});
}
函数createHeatmap(){
如果(!heatmap | | |!heatmap.getMap | | heatmap.getMap()==null){
var热图数据=[
新的google.maps.LatLng(37.782551,-122.445368),
新google.maps.LatLng(37.782745,-122.444586),
新google.maps.LatLng(37.782842,-122.443688),
];
heatmap=新建google.maps.visualization.HeatmapLayer({
数据:热图数据,
});
热图.设置图(map);
}
}
函数deleteHeatmap(){
heatmap.setMap(空);
}
google.maps.event.addDomListener(窗口'load',initMap)代码>
html,
身体,
#地图画布{
高度:500px;
宽度:500px;
边际:0px;
填充:0px
}
创建热图
删除热图
您必须跟踪您创建的所有“层”,然后无论您添加了多少热图,您只需使用for循环(通过创建的热图数组循环)将其擦除即可
这是使热图为零并清空阵列的主要功能,因此当您在整个阵列上启动时,也会从零索引开始:
function deleteHeatmap(){
for (var k = 0; k < array.length; k++) {
array[k].setMap(null);
}
array=[];
}
函数deleteHeatmap(){
for(var k=0;k
下面是小提琴中的例子:
完整代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Heatmaps</title>
</head>
<body>
<div id="floating-panel">
<button onclick="createHeatmap()">Create Heatmap</button>
<button onclick="deleteHeatmap()">Delete Heatmap</button>
</div>
<div id="map" style="height: 600px; width: 800px;"></div>
<script>
var map, heatmap;
var heatmapdata;
var array=[];
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
zoom: 13,
center: {lat: 37.775, lng: -122.434},
mapTypeId: google.maps.MapTypeId.SATELLITE
});
}
function createHeatmap(){
heatmapdata = [
new google.maps.LatLng(37.782551, -122.445368),
new google.maps.LatLng(37.782745, -122.444586),
new google.maps.LatLng(37.782842, -122.443688),];
heatmap = new google.maps.visualization.HeatmapLayer({
data: heatmapdata,
});
array.push(heatmap);
heatmap.setMap(map);
}
function deleteHeatmap(){
for (var k = 0; k < array.length; k++) {
array[k].setMap(null);
}
array=[];
}
</script>
<script async defer
src="https://maps.googleapis.com/maps/api/js?signed_in=true&libraries=visualization&callback=initMap">
</script>
</body>
</html>
热图
创建热图
删除热图
var图、热图;
var热图数据;
var数组=[];
函数initMap(){
map=new google.maps.map(document.getElementById('map'){
缩放:13,
中心:{lat:37.775,lng:-122.434},
mapTypeId:google.maps.mapTypeId.SATELLITE
});
}
函数createHeatmap(){
热图数据=[
新的google.maps.LatLng(37.782551,-122.445368),
新google.maps.LatLng(37.782745,-122.444586),
新google.maps.LatLng(37.782842,-122.443688),];
heatmap=新建google.maps.visualization.HeatmapLayer({
数据:热图数据,
});
阵列推送(热图);
热图.设置图(map);
}
函数deleteHeatmap(){
for(var k=0;k
非常好,谢谢。因为我想创建堆叠热图,这是我需要的解决方案。谢谢,这也是非常有用的解决方案,但我想创建堆叠热图,以便其他解决方案更适合我的特定用例。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Heatmaps</title>
</head>
<body>
<div id="floating-panel">
<button onclick="createHeatmap()">Create Heatmap</button>
<button onclick="deleteHeatmap()">Delete Heatmap</button>
</div>
<div id="map" style="height: 600px; width: 800px;"></div>
<script>
var map, heatmap;
var heatmapdata;
var array=[];
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
zoom: 13,
center: {lat: 37.775, lng: -122.434},
mapTypeId: google.maps.MapTypeId.SATELLITE
});
}
function createHeatmap(){
heatmapdata = [
new google.maps.LatLng(37.782551, -122.445368),
new google.maps.LatLng(37.782745, -122.444586),
new google.maps.LatLng(37.782842, -122.443688),];
heatmap = new google.maps.visualization.HeatmapLayer({
data: heatmapdata,
});
array.push(heatmap);
heatmap.setMap(map);
}
function deleteHeatmap(){
for (var k = 0; k < array.length; k++) {
array[k].setMap(null);
}
array=[];
}
</script>
<script async defer
src="https://maps.googleapis.com/maps/api/js?signed_in=true&libraries=visualization&callback=initMap">
</script>
</body>
</html>