2

启动 Google Map 或 Google Earth Plugin 实例后是否可以延迟加载 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

4

1 回答 1

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

于 2011-12-08T05:11:25.310 回答