【问题标题】:kml hide polygon at high zoom levelkml 以高缩放级别隐藏多边形
【发布时间】:2013-07-15 01:59:44
【问题描述】:

我有一个 Google 地图,其中点和多边形定义在 KML 文件中,而点仅在另一个 KML 文件中定义。我希望能够根据缩放级别加载一个或另一个,并尝试了以下变体:

var url_end = "?nocache=" + (new Date()).valueOf();
var NWlayer = new google.maps.KmlLayer({
  if (map.getZoom() > 18){
    url: "http://www.example.com/Google/ShowPointsOnly.kml" + url_end
  }
  else {
    url: "http://www.example.com/Google/ShowAll.kml" + url_end
  }
});
NWlayer.setMap(map);

...但是根据我尝试的变化,无论缩放级别如何,我都会得到点和多边形,否则我根本得不到地图。

【问题讨论】:

    标签: google-maps hide zooming kml polygon


    【解决方案1】:

    您需要为google.maps.Map zoom_changed 事件添加一个事件监听器

    var NWlayer1 = new google.maps.KmlLayer({
        preserveViewport: true,
        url: "http://www.example.com/Google/ShowPointsOnly.kml" + url_end
      });
    var NWlayer2 = new google.maps.KmlLayer({
        preserveViewport: true,
        url: "http://www.example.com/Google/ShowAll.kml" + url_end
      });
    google.maps.event.addListener(map, 'zoom_changed', function() {
      if (map.getZoom() > 18){
        NWlayer1.setMap(map);
        NWlayer2.setMap(null);
      } else {
        NWlayer1.setMap(null);
        NWlayer2.setMap(map); 
      }
    });
    

    【讨论】:

    • 通过改变它,页面加载时没有任何点或多边形。缩放一级然后添加点和多边形,但缩放超过 18 级会使其跳回到 15 级。页面位于noosawaters.org/Google/noosawaters_test2.html。 KML 文件是正确的,因为它们在独立时可以正确加载,没有任何多余的装饰。
    • 要让其中一个图层默认显示,请在初始化地图时对其调用 setMap(map)。要阻止 KmlLayer 自动缩放以显示其内容,请将 {preserveViewport: true} 选项添加到 KmlLayer
    • 完美。非常感谢。这是一个陡峭但有趣的学习曲线。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    • 2013-05-03
    • 1970-01-01
    相关资源
    最近更新 更多