我在某些美国国家/地区的Google地图中创建了多边形叠加层。它们在初始化地图时从xml文件加载。一旦用户进行搜索,我一直试图找出一种删除或隐藏多边形形状的方法。这是我正在进行的工作的链接,下面是我用于在地图初始化期间加载多边形的代码。
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专家,所以任何帮助都将非常感激。我花了一个星期的时间试图解决这个问题并且无法解决问题。
答案 0 :(得分:1)
您在哪里定义polys
?
polys
应该是一个数组。
var polys = new Array();
然后你将每个poly
推送到polys
数组,这很好。如果要隐藏每个Polygon,请遍历polys
数组并删除每个Polygon:
for (var i=0; i<polys.length; i++) {
polys[i].setMap(null);
}