OpenLayers2---Features
来源:互联网 发布:阿里云服务器做网站 编辑:程序博客网 时间:2024/05/17 19:59
有时我们需要在地图上标注一些特征点,在OpenLayers中,我们可以使用Vector来实现这些功能。具体可查看代码实现(使用版本OpenLayers2.13):
参考示例(examples):vector-features-with-text
代码
HTML代码:
<!DOCTYPE html><html><head lang="en"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"> <meta name="apple-mobile-web-app-capable" content="yes"> <title>Vector 特征点(带文本)</title> <comment> 使用vector标记带文本的特征点<br/> </comment> <!---导入CSS文件 --> <link rel="stylesheet" href="vector_features_with_text.css"></head><body onload="init()"><div id="map"></div><!-- 引入OpenLayers库--><script type="text/javascript" src="../../Common/OpenLayers/OpenLayers.js"></script><!-- 引入自定义的JS--><script type="text/javascript" src="vector_features_with_text.js"></script></body></html>
JS代码:
/** * Created by echo on 2017/8/29. *//** * 页面载入完成时调用此函数,对地图进行初始化 * 1. 创建一个map * var map = new OpenLayers.Map('map',{}); * 2. 创建一个基础图层 * 3. 将基础图层加入到map中 * map.addLayer(basic_layer); * 4. 创建一个显示特征点的图层vectorLayer * 4. 创建需要的特征点 * 5. 将特征点加入到vectorLayer图层中 * 6. 设置地图显示的中心 * map.setCenter(new OpenLayers.LonLat(-109.370078125, 43.39484375), 4); */function init() { // 新建一个map对象 var map = new OpenLayers.Map('map',{}); // 创建一个基础图层 var basic_layer = new OpenLayers.Layer.WMS( 'basic Layer', 'http://vmap0.tiles.osgeo.org/wms/vmap0', { layers: 'basic' }, { isBaseLayer: true } ); // 将基础图层添加到map中 map.addLayer(basic_layer); // 添加地图空间 Layer Switcher,图层选择器 map.addControl(new OpenLayers.Control.LayerSwitcher({})); // 渲染器 var renderer = OpenLayers.Util.getParameters(window.location.href).renderer; renderer = (renderer) ? [renderer] : OpenLayers.Layer.Vector.prototype.renderers; // 采用 ${} 来获取特征点 attribute 中的值 var vectorLayer = new OpenLayers.Layer.Vector("Simple Geometry", { styleMap: new OpenLayers.StyleMap({ 'default' : { strokeColor : "#00FF00", strokeOpacity : 1, StrokeWidth : 3, fillColor : "#FF5500", fillOpacity : 0.5, pointRadius : 6, pointEvents : "visiblePainted", label : "name: ${name}\n\nage: ${age}", fontColor : "${favColor}", fontSize : "12px", fontSize : "12px", fontFamily : "Courier New, monospace", fontWeiht : "bold", labelAlign : "${align}", labelXOffset : "${xOffset}", labelYOffset: "${yOffset}", labelOutlineColor: "white", labelOutlineWidth: 3 } , }), renderers : renderer }); // 创建特征点 var point = new OpenLayers.Geometry.Point(-111.04, 45.68); // 创建一个Point var pointFeature = new OpenLayers.Feature.Vector(point); pointFeature.attributes = { name : "toto", age : 20, favColor : 'red', align : "cm" }; // 创建多边形特征点 var pointList = []; // 随机生成多边形的点 for(var p = 0; p < 9; p++) { var a = p * (2 * Math.PI) / 7; var r = Math.random(1) + 1; var newPoint = new OpenLayers.Geometry.Point( point.x + 5 + (r * Math.cos(a)), point.y + 5 + (r * Math.sin(a))); // 在这里将第0个点添加到List中是因为 pointList.push(newPoint); } pointList.push(pointList[0]); // 使用LinearRing来生成闭环的多边形 var linearRing = new OpenLayers.Geometry.LinearRing(pointList); var polygonFeature = new OpenLayers.Feature.Vector( new OpenLayers.Geometry.Polygon([linearRing])); polygonFeature.attributes = { name: "dude", age: 21, favColor: 'purple', align: 'lb' }; // 线 multiFeature = new OpenLayers.Feature.Vector( new OpenLayers.Geometry.Collection([ new OpenLayers.Geometry.LineString([ new OpenLayers.Geometry.Point(-105,40), new OpenLayers.Geometry.Point(-95,45) ]), new OpenLayers.Geometry.Point(-105,40) ]), { name: "ball-and-chain", age: 30, favColor: 'black', align: 'rt' } ); // 文本可移动 var labelOffsetPonit = new OpenLayers.Geometry.Point(-101.04, 35.68); var labelOffsetFeature = new OpenLayers.Feature.Vector(labelOffsetPonit); labelOffsetFeature.attributes = { name: "offset", age: 22, favColor: 'blue', align: "cm", // 左右移动,- 为左 xOffset: 50, // 上下移动,- 为下 yOffset: -15 } // 空的??? var nullFeature = new OpenLayers.Feature.Vector(null); nullFeature.attributes = { name: "toto is some text about the world", age: 20, favColor: 'red', align: "cm" } // 添加图层vectorLayer到地图中 map.addLayer(vectorLayer); // 在vectorLayer中添加特征点 vectorLayer.drawFeature(multiFeature); vectorLayer.addFeatures([pointFeature,polygonFeature,labelOffsetFeature,nullFeature]); // 设置显示中心 map.setCenter(new OpenLayers.LonLat(-109.370078125, 43.39484375), 4); //map.zoomToMaxExtent();}
CSS代码:
bdoy { width: 100%; height: 100%; padding: 0; margin: 0;}#map { width: 900px; height: 600px;}
结果:
阅读全文
0 0
- OpenLayers2---Features
- openlayers2 vector
- openlayers2 笔记
- Features
- Features
- openlayers2中selectcontrol用法
- Openlayers2唯一值渲染
- openlayers2渐变色渲染
- openLayers2 画图标
- OpenLayers2---WMS服务
- OpenLayers2 --- Feature Event
- Openlayers2中统计图的实现
- Openlayers2卷帘功能的实现
- Openlayers2中聚类的动态实现
- Openlayers2中vector扩展FeatureLayer
- ActiveMq Features--- Consumer Features
- Assembling Features Reading Features
- openlayers2.X画园形和扇形demo
- spectre.css知识点(一)时间轴的实现
- source insight不能跳转到函数定义
- Codeforces 833B (Codeforces Round #426) The Bakery DP+线段树
- SpringBoot开发案例之整合Swagger篇
- 【Machine Learning】笔记:无监督学习之 Neighbor Embedding
- OpenLayers2---Features
- 正则表达式
- 网络请求中的多种编码乱码问题
- Ubuntu快速上手指南
- Java基本数据类型
- 删除GitHub里的仓库
- spring事物管理
- 笨方法学Python 习题0
- Thread、Handler、HandlerThread的区别