【问题标题】:lazy / demand load KML in google maps or google earth plugin?谷歌地图或谷歌地球插件中的懒惰/需求加载KML?
【发布时间】:2011-12-08 13:12:42
【问题描述】:

是否可以在启动 Google 地图或 Google 地球插件实例后延迟加载 KML 文件?也许有一个“边界框”事件可以用来对所需的 KML 文件进行排队?

编辑 => 找到答案:

发现了这个小花絮 (http://code.google.com/apis/maps/documentation/javascript/events.html):

注意:如果您尝试检测 视口中的变化,请务必使用 具体的 bounds_changed 事件 而不是组成 zoom_changed 和 center_changed 事件。因为 Maps API 触发后面这些事件 独立地, getBounds() 可能不会 报告有用的结果,直到之后 视口已权威更改。 如果您希望在此之后 getBounds() 一个事件,一定要听 bounds_changed 事件。

...这使我进入了此页面上的“视口标记管理”:http://code.google.com/apis/maps/articles/toomanymarkers.html#viewportmarkermanagement

提出这个基本想法:

  google.maps.event.addLisener(map, 'idle', showMarkers);

  function showMarkers() {
    var bounds = map.getBounds();

    // Call you server with ajax passing it the bounds

    // In the ajax callback delete the current markers and add new markers
  }

同样,对于 GEP,有这样的:

GEView.getViewportGlobeBounds()
返回一个完整的边界框 包含地球上的区域 当前可见。退回的盒子 将大于严格的 可见,如果有必要 包括所有可见的内容。

返回一个对应的 KmlLatLonBox 到当前的边界框 视口或 null 如果没有 地球是可见的

【问题讨论】:

  • 但是当这个功能在 Kml 中原生可用时,为什么要这样做呢?使用 KmlRegions 以及 refreshMode 和 viewRefreshMode 之类的东西,您可以完全控制何时、何地以及如何显示数据,而无需做任何事情,除了在任一 api 中加载数据......没有事件,不需要任何 showMarkers 方法,除了加载。此外,您的“kml 应用程序”在支持 Kml 的应用程序(如 Google 地球桌面客户端等)中也可以正常工作,

标签: javascript kml google-earth-plugin


【解决方案1】:

是的,KML 区域仅在数据落入用户视图并占据屏幕的特定部分时才允许加载和绘制数据。因此,如果您在 Google Earth Plugin 或 Google Maps APIs 中使用 KML,则无需自己动手...

查看这篇关于使用 Kml 区域的精彩文档: http://code.google.com/apis/kml/documentation/regions.html

连同 kmlRegion 接口参考 http://code.google.com/apis/kml/documentation/kmlreference.html#region

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-04
    • 2011-12-30
    • 2014-12-18
    相关资源
    最近更新 更多