【问题标题】:KML layer On/Off for integrated Google Maps 3 & GE application用于集成 Google Maps 3 和 GE 应用程序的 KML 层开/关
【发布时间】:2013-12-22 06:42:14
【问题描述】:

我有一个集成了 GMaps 和 GEarth 的网络地图,以便用户在不同视图之间切换。

我加载 3 个 KML 文件并使用复选框控制它们的可见性。这个例子这里使用了相同的函数stackOverflowQuestion

当我切换视图地图 - 卫星 - 地球时,我的 KML 在地图和卫星视图上工作,但不是在地球视图上。

    function init() {
    map = new google.maps.Map(document.getElementById('map'), {
      zoom: 14,
      center: new google.maps.LatLng(xx, xx),
      mapTypeId: google.maps.MapTypeId.TERRAIN
    });

    googleEarth = new GoogleEarth(map);

    google.maps.event.addListenerOnce(map, 'tilesloaded', addOverlays);

    }//end init

    [...]

    function OnOffKML(i) {

    if(currentKmlObjects[i].getMap() === null) {
        currentKmlObjects[i].setMap(map);
    }
    else {
        currentKmlObjects[i].setMap(null);
    }
}

此功能适用于 Google Maps Api 3,但不适用于 Google Earth 插件... 这是否意味着我必须使用 fetch{} 才能在 GE 上显示?有解决办法吗?

我能否以任何方式为地球视图排除我的 toggleKML{}?

【问题讨论】:

    标签: google-maps-api-3 checkbox kml fetch google-earth-plugin


    【解决方案1】:

    好的, 这里的问题是我们不能为 GM Api 3 编写代码,也不能期望 GE Api 也有结果。

    当然这两者可以集成,但您必须决定两者之一的功能有限。 因此,我决定拆分应用程序,单独高效地工作。

    至于 KML 使用的 GE 方法,我使用了 fetch{} 函数,以及复选框选择。

    【讨论】:

      【解决方案2】:

      这并不完全正确,您只需将 Kml 重新加载到地球 API。

      您可以修改 OnOffKML 函数以根据当前模式(地球/地图)采取不同的行动。

      您目前遇到的问题是您在 Google Earth 插件上使用 Google Maps Api 方法。

      无论如何,类似以下的方法都可以,允许该方法同时处理两者。

      function OnOffKML(i) {
          if(googleEarth.getWindow().getVisibility()) {
             // code for earth api
          } else {
             // code for maps api
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-20
        • 2018-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多