在OL3中创建自己的动态图层类型

时间:2014-06-03 09:40:55

标签: javascript html5 svg openlayers-3

我目前正在将为OpenLayers创建的特殊动态图层类型从OL2迁移到OL3。该图层显示正在预定义轨迹上移动的标记(它们的批次,通常约为1000)。轨迹从服务器以特殊的JSON格式加载。

我目前对OL2的方法非常高效,大大优化并使用Raphael库(http://raphaeljs.com/)。一般应用程序布局如下所示:

  • 加载OpenLayers2,创建地图
  • 创建一个特殊图层“DynLayer”,它是在OL2自己的VectorLayer之后建模的。此层处理与OL2的通信(缩放,平移,拖动等),并提供非常复杂的异步机制,以根据当前交互重绘以映射(即移动标记)(例如,如果用户刷新率下降目前正在平移以映射以防止口吃效果)。在构造过程中,DynLayer创建了一个Raphael SVG层并将其附加到DOM中。如果平移或缩放地图,则DynLayer会同步Raphael图层。
  • 然后在SVG层上创建标记,并定期更新其位置

这种方法非常有效,因为Raphael支持较旧的IE版本,它也可以在IE8和IE7中运行。它还使我能够提供基于Raphaels内置动画方法的动画。

我现在正在尝试将此应用程序迁移到OL3,我并不是100%确定最佳方法是什么。 OL3加载OL3后是否可以添加自定义图层?如果是的话,有没有文件?我尝试实现我自己的VectorLayer版本,但OL3抛出了大量与Closure API提供的goog对象相关的错误。

更一般地说:重新创建我的旧方法并在OL3上绘制Raphael图层会更好吗?这种方法可以让我重用我以前的大部分代码。或者我应该使用OL3提供的方法直接在HTML5画布上绘制?如果是这样,我如何获得画布刷新率的控制权?

我看了http://ol3js.org/en/vector-api/examples/dynamic-data.html?q=dynamic的示例,但它并没有真正满足我的需求。标记在无限循环中动画,我需要对刷新率进行特定控制。更一般地说,如何防止在OL3自己的画布刷新之一上删除我的标记(例如,如果加载了新的图块)。

我对OL3的总体印象是,添加自己的扩展比使用OL2更难,OL2对我来说比OL3更“开放”。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

请注意,OL3并不适用于IE7或其他旧版本的'浏览器。 据我所知,OL3是为性能而构建的,并且具有快速矢量渲染。 它还与d3集成,因此它可能与其他技术集成。

相关问题