javascript - 从 Google map 中删除/隐藏美国各州的多边形?

标签 javascript google-maps google-maps-api-3

我已在美国某些州的 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/

相关文章:

javascript - Node JS : Promise resolve value is "undefined"

javascript - 在较大矩形中拟合不同大小矩形的算法

javascript - 从 Google map 中的建议 route 提取距离

javascript - 谷歌地图 API v3 : Custom overlay with canvas drawing not receiving events in Safari

javascript - 点击透明 float iframe

javascript - 在与 Fabric.js 关联的 Canvas 之外使用 Cufon

ios UITextView 没有出现在 map 上

google-maps - 为什么 Geocode API 找不到这个地址,而 Google map 找到了?

android - Android WebView 上的 getBoundingClientRect 错误

php - 使用 php 的简单谷歌地图