2013-07-23 32 views
0

我有一个页面在http://www.noosawaters.org/Google/noosawaters_xml.html有两个多边形,我想要在较高缩放级别移除。多边形是从mySQL DB表中保存的坐标生成的。 php创建必要的xml树。在高缩放级别移除xml生成的多边形

我的代码,但是,只删除一个多边形:

var phpscript = "noosawaters_xml.php"; // creates xml data for polygons 
downloadUrl(phpscript, function(data) { 
var polygons = data.documentElement.getElementsByTagName("polygon"); 
for (var a = 0; a < polygons.length; a++) { 
    var strokeColor = polygons[a].getAttribute("strokeColor"); 
    var strokeOpacity = polygons[a].getAttribute("strokeOpacity"); 
    var strokeWeight = polygons[a].getAttribute("strokeWeight"); 
    var fillColor = polygons[a].getAttribute("fillColor"); 
    var fillOpacity = polygons[a].getAttribute("fillOpacity"); 
    var pts = []; 
    var points = polygons[a].getElementsByTagName("point"); 
    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 polyOptions = { 
     paths: pts, 
     strokeColor: strokeColor, 
     strokeOpacity: strokeOpacity, 
     strokeWeight: strokeWeight, 
     fillColor: fillColor, 
     fillOpacity: fillOpacity 
    } 
    var this_polygon = a + 1; 
    var NoosaWaters = "NoosaWaters" + this_polygon; 
    NoosaWaters = new google.maps.Polygon(polyOptions); 
    NoosaWaters.setMap(map); 
    google.maps.event.addListener(map, "zoom_changed", function() { 
     if (map.getZoom() > 18){ 
     NoosaWaters.setMap(null); 
     } 
     else{ 
     NoosaWaters.setMap(map); 
     } 
    }); 
} 
}); 

回答

1

有不同的方式,我更喜欢以下内容:

的地图创建一个自定义属性,将保存该MAP-属性为多边形(在地图实例或空,这取决于缩放级别):

//add this code right after the code where you create the Maps-instance 

    google.maps.event.addListener(map, 'zoom_changed', function(){ 
    var polymap=this.getZoom() > 18 ? null : this; 
     if(this.get('polymap')!==polymap){ 
     this.set('polymap',polymap); 
     } 
    }); 
    google.maps.event.addListenerOnce(map,'idle',function(){ 
     google.maps.event.trigger(map, 'zoom_changed') 
    }); 

地图现在有一个polymap - 属性,这将在0123更新。

所有你现在要做的就是在多边形上的地图polymap属性的地图属性绑定,

替换此代码:通过代码

NoosaWaters.setMap(map); 
    google.maps.event.addListener(map, "zoom_changed", function() { 
     if (map.getZoom() > 18){ 
     NoosaWaters.setMap(null); 
     } 
     else{ 
     NoosaWaters.setMap(map); 
     } 
    }); 

NoosaWaters.bindTo('map',map,'polymap'); 
+0

这很完美。非常感谢。 –