摘要: OpenLayers 是一个专为Web GIS 客户端开发提供的JavaScript 类库包,用于实现标准格式发布的地图数据访问。从OpenLayers2.2版本以后,OpenLayers已经将所用到的Prototype.js组件整合到了自身当中,并不断在Pr...
OpenLayers 是一个专为Web GIS 客户端开发提供的JavaScript 类库包,用于实现标准格式发布的地图数据访问。从OpenLayers2.2版本以后,OpenLayers已经将所用到的Prototype.js组件整合到了自身当中,并不断在Prototype.js的基础上完善面向对象的开发,Rico用到地方不多,只是在OpenLayers.Popup.AnchoredBubble类中圆角化DIV。
OpenLayers在2.4版本中历史性地添加了Vector图层的支持。这个功能分别在不同的浏览器上用SVG/VML实现,其难度可以想象。Vector的出现可能大大增加开源WebGIS客户端的功能。
不过问题也随之而来,在使用Vector的时候,我们通常还要添加一个SelectFeature控件。这个控件的功能是使矢量的Feature可选,或是响应其他鼠标事件。问题就在于添加了SelectFeature之后,原本的Marker就不能再捕捉到事件,导致Popup之类的功能失效(包括Popup本身也不能捕捉到事件)。
鱼和熊掌不能兼得,不过OpenLayers 2.4中已经给Vector图层里增加了createMarker和createPopup两个方法,它的注释是“HACK - we need to decide if all vector features should be able to create markers”。料想利用这两个方法构造的marker和应该是可以解决前面的问题。
Vector的Marker的冲突可能还是会继续一段时间,看起来确实是一个小小的缺陷。