我正在尝试根据Google地图中的缩放级别添加和删除多边形。这是我用来检测缩放变化以添加或删除多边形的方法。
gpa <- txt[grep("GPA",txt)]
gpa <- strsplit(gpa, " ")
gpa <- matrix(
as.numeric(
t(
as.data.frame(gpa)
)[1:2, 2:3]
),ncol = 2)
问题是只添加了一个多边形,并且只删除了一个多边形。总共有3个多边形。如果删除google.maps.event.addListener(map, 'zoom_changed', function () {
if (map.getZoom() <= 13) {
polygons.setMap(null);
} else {
polygons.setMap(map);
}
});
事件侦听器,则所有多边形都会显示正常,但我无法根据缩放更改删除它们。
放大一次以查看多边形。缩小两次以删除多边形。
JSFiddle可以在这里看到:http://jsfiddle.net/pc7tux02/5/
答案 0 :(得分:1)
您只显示并隐藏代码中的最后一个多边形。 该解决方案基于多边形阵列和用于显示或隐藏所有多边形的角色。有关完整功能的版本,请参阅此jsfiddle。
这些是主要部分提取
var polygons = [] ;
var poly;
............
for (var j = 0; j < coords.length; j++) {
var pt = new google.maps.LatLng(coords[j][1], coords[j][0]);
bounds.extend(pt);
path.push(pt);
}
poly = new google.maps.Polygon({
path: path,
strokeColor: "#FF0000",
strokeOpacity: 5,
strokeWeight: 5,
fillColor: "#FF0000",
fillOpacity: 0.5
});
polygons.push(poly);
path = [];
}
.........
google.maps.event.addListener(map, 'zoom_changed', function () {
if (map.getZoom() <= 13) {
for (var k = 0; k < polygons.length; k++){
polygons[k].setMap(null);
}
} else {
for (var k = 0; k < polygons.length; k++){
polygons[k].setMap(map);
}
}
});
答案 1 :(得分:1)
问题是您的polygons
仅存储应用中的最后一个多边形。相反,将它变成一个数组,当你想要更新它时,使用.foreach
循环遍历数组。