openlayer 中Vector的详细学习

    这篇文章里,有些地方对Vector的说明可能翻译的不是很准确,希望大家海涵。

    首先需要向 map 中添加Vector图层。类似于其他的图层操作,代码说明,Vector的初始化:

    

/*为图层追加一个属性renderers*/
		var vector_layer=new OpenLayers.Layer.Vector(
			'Basic Vector Layers',
			/*
			*指定在html页面中存放vector的标签,比如WMS,存放的标签形式是<img>
			*如果render匹配失败,会按照数组中声明的次序依次匹配;
			*/
			{renderers:['SVG','VML','Canvas']}
		);

    为了先展示一下Vector图层的效果,下面向图层中添加EditingToolbar控件,代码在之前的介绍中也有过:

    

/*向地图中追加图层,考虑矢量图层是否应该被设置在最顶层*/
		map.addLayers([wms_layer,wms_layer_lable,vector_layer]);
		map.addControl(new OpenLayers.Control.EditingToolbar(vector_layer));	//添加控件

    截取的效果图如下:


   【在图中我将澳大利亚用面状图形大致进行覆盖,缩放map,会发现 Vector图层和其他Layer一起进行了缩放,当刷新页面(F5)时,绘制的Feature(在Vector中绘制的图形)会被清空,请特别注意,??这里没有对绘制的Feature进行保存。还有界面的一个问题,放大地图,漫游时会发现,??地图右侧总会有一定宽度的空白无法填充(大家帮助解决)】。

    

    有了初步了解后,接着详细介绍Vector的属性跟方法:

    部分属性如下:

    • drawn:Feature是否被绘制,返回boolean.
    • features:返回Vector中的图形,可以指定下标返回单独的图形
    • isBaseLayer:是否是底图,默认属性为false
    • isFixed: 矢量图层是否随着地图(拖拽)的移动而移动,默认为false。因为在有些情况下你想放一个固定的标志。
    • isVector:判断已存在的图层是否为矢量图层
    • protocol:为Vector指定一个协议对象去使用。
    • reportError:默认为true,当指定render失败时是否返回错误信息
    • selectedFeatures:返回被选中的Feature的数组。
    • strategies:返回一个策略数组对象
    • style:返回Vector的style属性,用于改变Vector的外观

    在火狐的控制台中去验证这些属性,发现了很多无法操作的东西。比如,在Vector中绘制的Feature自己没法进行选择;isFiexd的属性返回 false,但是随着地图的拖拽而移动;



    我决定今天就先到这里吧,弄清了在给完善完整,也希望大家帮助我。

    交流群:45503780(php交流群)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenLayers,source是指地图数据的来源,可以是各种不同的数据格式。其,通过layer获取数据源可以通过`layer.getSource()`来实现。可以通过`source.addFeature(feature)`来给source添加单个feature,也可以通过`source.addFeatures([feature1,feature2,xxx])`来给source添加多个feature。通过`source.getProperties()`可以获取source的所有属性。判断source的类型可以使用`if (source instanceof VectorSource){}`。GeoJSON是一种常用的数据格式,用于编码各种地理数据结构。可以通过url获取GeoJSON格式的数据。需要记住source是layer必须的选项,定义着地图数据的来源,而且source支持多种数据格式。可以使用函数创建要素数据,也可以使用GeoJSON格式数据。在OpenLayers,可以使用`ol.source.Vector`来创建矢量图层的source,通过`features`参数传入使用`ol.format.GeoJSON().readFeatures(geojsonObject)`获取的要素数据。然后可以创建一个`ol.layer.Vector`图层,将该source设置为图层的source,并定义样式。最后,可以通过`map.addLayer(vectorLayer)`将该图层添加到地图。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Openlayer的source数据源](https://blog.csdn.net/qq_40323256/article/details/120063007)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [OpenLayers - Source简介 (四)](https://blog.csdn.net/yy729851376/article/details/123031013)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值