【问题标题】:kmlLayer causing focus to change (google map api v3)kmlLayer 导致焦点改变(谷歌地图 api v3)
【发布时间】:2012-12-19 22:03:43
【问题描述】:

我将 NOAA 雷达信息分层放置在焦点为 8 的地图上。当页面加载时,地图最初呈现为 8,然后立即重新绘制自身以显示整个区域。

我使用的 KML 文件包含用于绘制雷达图像的最小/最大纬度/经度坐标(在本例中为美国东南部地区)。如果我更改这些坐标以覆盖更小的区域,谷歌地图的大小会按照我的意愿调整,但雷达活动会根据 KML 文件进行裁剪。如果用户缩小或滚动到默认地图区域之外,这是一个问题。

示例地图:http://georgiaoffroad.com/map2.html

KML 文件示例:http://georgiaoffroad.com/includes/southeastradar.kml

有没有办法让雷达图像保持较大,但将地图聚焦在可用雷达图像的较小区域,以便用户可以缩放或滚动查看周围区域的天气?

【问题讨论】:

    标签: google-maps-api-3 kml weather


    【解决方案1】:

    将图层的选项preserveViewport设置为true:

    new google.maps
         .KmlLayer({url:'http://georgiaoffroad.com/includes/southeastradar.kml',
                    preserveViewport:true});
    

    【讨论】:

    • 很好——有没有办法调整图层的透明度?
    • 如果你指的是雷达,你可以使用 css,例如:img[src^="http://radar.weather.gov/ridge/Conus/RadarImg/"]{opacity:.5}
    • 此选项的使用是否存在一些已知限制?我为我的地图使用了 3 个图层,当我在 3 个图层中的任何 2 个上使用此选项时,它工作正常。但是,如果我将其添加到所有这些中,则整个地图甚至都不会初始化,无论最初是否显示图层。
    • AFAIK 没有限制。 3层演示:jsfiddle.net/doktormolle/nkH2Z
    【解决方案2】:

    我意识到这是一个很晚的答案,但我想发布我使用的最适合我的技术。 Molle 博士发布的方法要么不再有效,要么对我不起作用。

    添加“ctaLayer.set('preserveViewport', true);”将图层设置为地图后,地图将不会自动聚焦到该 kmz/kml 文件。

    var ctaLayer = new google.maps.KmlLayer('/kmz/90201.kmz');
              ctaLayer.setMap(map);
              ctaLayer.set('preserveViewport', true);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 2018-11-07
      • 1970-01-01
      • 1970-01-01
      • 2012-08-03
      • 2014-04-06
      • 1970-01-01
      相关资源
      最近更新 更多