我已在美国某些州的 Google map 中创建了多边形叠加层。本地图初始化时,它们从 xml 文件加载。我一直在试图找出一种在用户进行搜索后删除或隐藏多边形形状的方法。这是我正在进行的工作的链接,下面是我在 map 初始化期间用于加载多边形的代码。
Google Map with Polygon shapes of USA States
function initialize() {
map = new google.maps.Map(document.getElementById("map"), {
center: new google.maps.LatLng(38, -97.5),
zoom: 5,
mapTypeId: 'terrain',
mapTypeControl: false,
panControl: false,
streetViewControl: false,
backgroundColor: '#eee2b2',
zoomControl: true,
zoomControlOptions: {
style: google.maps.ZoomControlStyle.SMALL,
position: google.maps.ControlPosition.RIGHT_BOTTOM
},
});
map.setOptions({styles: vintagestyle});
infobox = new InfoBox(boxoptions);
map.overlayMapTypes.insertAt(
0, new CoordMapType(new google.maps.Size(400, 400)));
jQuery.get("js/account_locator/current_states.xml", {}, function(data) {
jQuery(data).find("state").each(function() {
var colour = '#835c0e';
var points = this.getElementsByTagName("point");
var pts = [];
for (var i = 0; i < points.length; i++) {
pts[i] = new google.maps.LatLng(parseFloat(points[i].getAttribute("lat")), parseFloat(points[i].getAttribute("lng")));
}
var poly = new google.maps.Polygon({
paths: pts,
strokeColor: '#eee2b2',
strokeOpacity: 0.7,
strokeWeight: 1,
fillColor: colour,
fillOpacity: 0.2,
clickable: false
});
polys.push(poly);
poly.setMap(map);
});
});
}
google.maps.event.addDomListener(window, 'load', initialize);
我在网络上进行了多次搜索,但没有任何结果。隐藏多边形的标准方法似乎是
poly.setMap(null);
但是无论我将代码放在哪里,这都不起作用。不确定它是否与我加载多边形的方式(在初始化期间)、有多少多边形有关,或者是否与代码的构造方式有关。我根本不是 javascript 专家,所以任何有关这方面的帮助将不胜感激。我花了一周时间试图解决这个问题,但没有任何效果。
最佳答案
你在哪里定义polys
?
polys
应该是一个数组。
var polys = new Array();
然后您将每个 poly
推送到 polys
数组,这很好。如果要隐藏每个多边形,请循环遍历polys
数组并删除每个多边形:
for (var i=0; i<polys.length; i++) {
polys[i].setMap(null);
}
关于javascript - 从 Google map 中删除/隐藏美国各州的多边形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30356104/