如何删除所有形状 Google 地图
How to delete all shapes Google Maps
我有一个代码可以从 sql 数据库中获取与所选文本相关的位置。对于其中的文本,我有一个按钮 (btn_locations
),其属性按类型(标记、多边形、圆形、矩形和多段线)包含用于在地图上设置相关形状的数据。
直到这一刻在地图上显示形状,当您单击每个按钮时,一切正常。我没有得到的是如何将地图设置为空,删除所有形状。
我的想法是按类型获取地图上显示的形状,并为每个形状(标记、多边形、圆形、矩形和多段线)设置空值,但我不知道如何做。
var btn_map = document.getElementsByClassName('btn_locations');
for (var i=0; i < btn_mapa.length; i++) {
google.maps.event.addDomListener(btn_map[i], 'click', function() {
var marker_data = this.getAttribute('data-marker');
var polyline_data = this.getAttribute('data-polyline');
var rectangle_data = this.getAttribute('data-rectangle');
var circle_data = this.getAttribute('data-circle');
var polygon_data = this.getAttribute('data-polygon');
if (marker_data != '') {
var markers = (new Function("return [" + marker_data + "];")());
for (var k = 0; k < markers.length; k++) {
var marker = new google.maps.LatLng(markers[k].lat, markers[k].lng);
markers[k] = new google.maps.Marker({
position: marker,
map: map,
}
});
}
}
if (polyline_data != '') {
var polylines = (new Function("return [" + polyline_data + "];")());
for (var k = 0; k < polylines.length; k++) {
var polyline = new google.maps.Polyline({
path: polylines[k],
geodesic: true,
strokeColor: '#fbb03b',
strokeOpacity: 0.8,
strokeWeight: 5
});
polyline.setMap(map);
}
}
if (rectangle_data != '') {
var rectanglesBounds = (new Function("return [" + rectangle_data + "];")());
for (var k = 0; k < rectanglesBounds.length; k++) {
var rectangle = new google.maps.Rectangle({
strokeColor: '#fbb03b',
strokeOpacity: 0.8,
strokeWeight: 1,
fillColor: '#fbb03b',
fillOpacity: 0.35,
bounds: rectanglesBounds[k]
});
rectangle.setMap(map);
}
}
if (circle_data != '') {
var circles = (new Function("return [" + circle_data + "];")());
for (var k = 0; k < circles.length; k++) {
var circle = new google.maps.Circle({
strokeColor: '#fbb03b',
strokeOpacity: 0.8,
strokeWeight: 1,
fillColor: '#fbb03b',
fillOpacity: 0.35,
center: circles[k].center,
radius: circles[k].radius
});
circle.setMap(map);
}
}
if (polygon_data != '') {
var polygons = (new Function("return [" + polygon_data + "];")());
for (var k = 0; k < polygons.length; k++) {
var polygon = new google.maps.Polygon({
paths: polygons[k],
strokeColor: "#fbb03b",
strokeOpacity: 0.8,
strokeWeight: 1,
fillColor: '#fbb03b',
fillOpacity: 0.35
});
polygon.setMap(map);
}
}
});
}
var btn_clear_all= document.getElementsById('btn_clear');
google.maps.event.addDomListener(btn_clear_all, 'click', function() {
//delete all shapes shown at map
});
我是通过在每个类型中添加一个x.push(类型)得到的
if (circle_data != '') {
var circles = (new Function("return [" + circle_data + "];")());
for (var k = 0; k < circles.length; k++) {
var circle = new google.maps.Circle({
map: map,
strokeColor: '#fbb03b',
strokeOpacity: 0.8,
strokeWeight: 1,
fillColor: '#fbb03b',
fillOpacity: 0.35,
center: circles[k].center,
radius: circles[k].radius
});
gcircles.push(circle);
}
}
然后为他们设置地图为空:
var gmarkers = [];
var gpolylines = [];
var grectangles = [];
var gcircles = [];
var gpolygons = [];
var btn_clear_all = document.getElementsByClassName('btn_clear');
for (var i=0; i < btn_clear_all .length; i++) {
google.maps.event.addDomListener(btn_clear_all[i], 'click', function() {
for (k = 0; k < gmarkers.length; k++) {
gmarkers[k].setMap(null);
}
for (k = 0; k < gpolylines.length; k++) {
gpolylines[k].setMap(null);
}
for (k = 0; k < grectangles.length; k++) {
grectangles[k].setMap(null);
}
for (k = 0; k < gcircles.length; k++) {
gcircles[k].setMap(null);
}
for (k = 0; k < gpolygons.length; k++) {
gpolygons[k].setMap(null);
}
});
}
我有一个代码可以从 sql 数据库中获取与所选文本相关的位置。对于其中的文本,我有一个按钮 (btn_locations
),其属性按类型(标记、多边形、圆形、矩形和多段线)包含用于在地图上设置相关形状的数据。
直到这一刻在地图上显示形状,当您单击每个按钮时,一切正常。我没有得到的是如何将地图设置为空,删除所有形状。
我的想法是按类型获取地图上显示的形状,并为每个形状(标记、多边形、圆形、矩形和多段线)设置空值,但我不知道如何做。
var btn_map = document.getElementsByClassName('btn_locations');
for (var i=0; i < btn_mapa.length; i++) {
google.maps.event.addDomListener(btn_map[i], 'click', function() {
var marker_data = this.getAttribute('data-marker');
var polyline_data = this.getAttribute('data-polyline');
var rectangle_data = this.getAttribute('data-rectangle');
var circle_data = this.getAttribute('data-circle');
var polygon_data = this.getAttribute('data-polygon');
if (marker_data != '') {
var markers = (new Function("return [" + marker_data + "];")());
for (var k = 0; k < markers.length; k++) {
var marker = new google.maps.LatLng(markers[k].lat, markers[k].lng);
markers[k] = new google.maps.Marker({
position: marker,
map: map,
}
});
}
}
if (polyline_data != '') {
var polylines = (new Function("return [" + polyline_data + "];")());
for (var k = 0; k < polylines.length; k++) {
var polyline = new google.maps.Polyline({
path: polylines[k],
geodesic: true,
strokeColor: '#fbb03b',
strokeOpacity: 0.8,
strokeWeight: 5
});
polyline.setMap(map);
}
}
if (rectangle_data != '') {
var rectanglesBounds = (new Function("return [" + rectangle_data + "];")());
for (var k = 0; k < rectanglesBounds.length; k++) {
var rectangle = new google.maps.Rectangle({
strokeColor: '#fbb03b',
strokeOpacity: 0.8,
strokeWeight: 1,
fillColor: '#fbb03b',
fillOpacity: 0.35,
bounds: rectanglesBounds[k]
});
rectangle.setMap(map);
}
}
if (circle_data != '') {
var circles = (new Function("return [" + circle_data + "];")());
for (var k = 0; k < circles.length; k++) {
var circle = new google.maps.Circle({
strokeColor: '#fbb03b',
strokeOpacity: 0.8,
strokeWeight: 1,
fillColor: '#fbb03b',
fillOpacity: 0.35,
center: circles[k].center,
radius: circles[k].radius
});
circle.setMap(map);
}
}
if (polygon_data != '') {
var polygons = (new Function("return [" + polygon_data + "];")());
for (var k = 0; k < polygons.length; k++) {
var polygon = new google.maps.Polygon({
paths: polygons[k],
strokeColor: "#fbb03b",
strokeOpacity: 0.8,
strokeWeight: 1,
fillColor: '#fbb03b',
fillOpacity: 0.35
});
polygon.setMap(map);
}
}
});
}
var btn_clear_all= document.getElementsById('btn_clear');
google.maps.event.addDomListener(btn_clear_all, 'click', function() {
//delete all shapes shown at map
});
我是通过在每个类型中添加一个x.push(类型)得到的
if (circle_data != '') {
var circles = (new Function("return [" + circle_data + "];")());
for (var k = 0; k < circles.length; k++) {
var circle = new google.maps.Circle({
map: map,
strokeColor: '#fbb03b',
strokeOpacity: 0.8,
strokeWeight: 1,
fillColor: '#fbb03b',
fillOpacity: 0.35,
center: circles[k].center,
radius: circles[k].radius
});
gcircles.push(circle);
}
}
然后为他们设置地图为空:
var gmarkers = [];
var gpolylines = [];
var grectangles = [];
var gcircles = [];
var gpolygons = [];
var btn_clear_all = document.getElementsByClassName('btn_clear');
for (var i=0; i < btn_clear_all .length; i++) {
google.maps.event.addDomListener(btn_clear_all[i], 'click', function() {
for (k = 0; k < gmarkers.length; k++) {
gmarkers[k].setMap(null);
}
for (k = 0; k < gpolylines.length; k++) {
gpolylines[k].setMap(null);
}
for (k = 0; k < grectangles.length; k++) {
grectangles[k].setMap(null);
}
for (k = 0; k < gcircles.length; k++) {
gcircles[k].setMap(null);
}
for (k = 0; k < gpolygons.length; k++) {
gpolygons[k].setMap(null);
}
});
}