刚开始接触openlayers的时候感觉GIS地图太难,压力太大,差点就要放弃这个了,后来随着慢慢的熟悉,感觉用起来确实也挺方便的。当然得感谢网上很多的前辈分享的经验。下面我来结合我自己的实际情况来讲讲openlayers的简单的功能的实现:
1.去官网下载OpenLayers,下载地址:http://openlayers.org/
有用到geoserver的可以去网上找找资料看看,我这里因为业务需求简单,就直接用的本地图片了,没有用geoserver。
下载之后解压,将img、lib、theme、OpenLayers.js这几个目录和文件拷贝到你的项目路径下。最好都放在一个路径下面。
2.在页面引入OpenLayers.js
<script type="text/javascript" src="OpenLayers.js"></script>
3.写js方法,创建地图:
var map = null; function init(){ <!-- create map --> var options={ controls:[new OpenLayers.Control.KeyboardDefaults()] };//添加键盘控制的控件 map = new OpenLayers.Map('map',options);//创建地图对象map,这里的map是用来显示的div的id var bounds = new OpenLayers.Bounds();//设置边界 bounds.extend(new OpenLayers.LonLat(0,0));//扩展边界 bounds.extend(new OpenLayers.LonLat(500,500)); bounds.toBBOX(); var size = new OpenLayers.Size(400,400); var wms = new OpenLayers.Layer.Image('b','img/maptest.jpg',bounds,size);//创建image类型的图层 map.addLayer(wms);//将图层添加到地图里面 map.setBaseLayer(wms);//设置图层为基层 map.zoomToMaxExtent(); <!-- add mapControl tools -->//下面几个事添加map控件的,根据自己需要添加 map.addControl(new OpenLayers.Control.PanZoomBar({ position:new OpenLayers.Pixel(2,15) })); map.addControl(new OpenLayers.Control.ScaleLine()); map.addControl(new OpenLayers.Control.OverviewMap()); map.addControl(new OpenLayers.Control.Navigation());
好了,接下来就是显示地图啦,注意:上面代码中可以看出图片的路径和格式,这个可以根据需要更换。
<body onload="init()"> <div id="map" style="width:500px;height:500px;"></div> </body>
然后可以运行一下,就可以看到地图啦:
好啦,地图可以创建啦,接下来就是给地图创建标注点啦:
还是再init()方法里面:
markers = new OpenLayers.Layer.Markers("Hello"); var lonlat = new OpenLayers.LonLat(x,y);//x、y为标注点的坐标,自己指定 markers = autoAddMarker(lonlat); map.addLayer(markers); }//init()结束 function getIcon(){ var size = new OpenLayers.Size(21,25); var offset = new OpenLayers.Pixel(-(size.w/2),-size.h); var icon = new OpenLayers.Icon('img/marker.png',size,offset); return icon; } function autoAddMarker(lonlat){ var marker = new OpenLayers.Marker(lonlat,getIcon()); marker.events.register("click", marker, function(evt){ alert("Hello"); }); markers.addMarker(marker); return markers; }
这样就可以在指定的坐标点产生标注图标了。
接下来你可能还会用到给地图添加文字标注,下面我们就一起来看看怎么添加文本标注吧:
还是再init()方法里面:
var style = new OpenLayers.Style({ label:"${type}", fontColor:"#289E08", fontFamily:"sans-serif", fontWeight:"bold", fontSize:30 });//这个style是文本标注图层的style,在这里可以设置文本标注的各种属性 var point = new OpenLayers.Geometry.Point(126,262);//创建文本标注的坐标点 vectorLayer = new OpenLayers.Layer.Vector("labelLayer",{ styleMap:new OpenLayers.StyleMap(style) });//创建一个文本标注的图层,一个图层上可以有多个标注 var feature = new OpenLayers.Feature.Vector(point);//这一步才是创建文本标注 feature.attributes={ type:"Hello" };//设置文本标注的内容 var feature = [feature];//因为addFeatures()的参数是数组,所以这里把feature放到数组里面 map.addLayer(vectorLayer);//将文本标注图层添加到map里面 vectorLayer.addFeatures(feature);//将该文本标注添加到文本标注图层上面
接下来给我做的完整的小例子给大家,希望可以帮到跟我一样刚接触OpenLayers的同学来学习。
<html> <head> <title>Text</title> <script type="text/javascript" src="OpenLayers.js"></script> <script type="text/javascript"> var map = null; var markers = null; var vectorLayer=null; function init(){ <!-- create map --> var options={ controls:[new OpenLayers.Control.KeyboardDefaults()] }; map = new OpenLayers.Map('map',options); var bounds = new OpenLayers.Bounds(); bounds.extend(new OpenLayers.LonLat(0,0)); bounds.extend(new OpenLayers.LonLat(500,500)); bounds.toBBOX(); var size = new OpenLayers.Size(400,400); var wms = new OpenLayers.Layer.Image('b','img/maptest.jpg',bounds,size); map.addLayer(wms); map.setBaseLayer(wms); map.zoomToMaxExtent(); <!-- add mapControl tools --> map.addControl(new OpenLayers.Control.PanZoomBar({ position:new OpenLayers.Pixel(2,15) })); map.addControl(new OpenLayers.Control.ScaleLine()); map.addControl(new OpenLayers.Control.OverviewMap()); map.addControl(new OpenLayers.Control.Navigation()); <!-- create textLayers --> var style = new OpenLayers.Style({ label:"${type}", fontColor:"#289E08", fontFamily:"sans-serif", fontWeight:"bold", fontSize:30 }); var point = new OpenLayers.Geometry.Point(126,262); vectorLayer = new OpenLayers.Layer.Vector("labelLayer",{ styleMap:new OpenLayers.StyleMap(style) }); var feature = new OpenLayers.Feature.Vector(point); feature.attributes={ type:"Hello", fontColor:"#7C99E2" }; var feature = [feature]; map.addLayer(vectorLayer); vectorLayer.addFeatures(feature); <!-- create markerLayers --> markers = new OpenLayers.Layer.Markers("Hello"); var lls = [[112,252],[86,34],[150,350],[100,200],[450,300]]; for(var i=0;i<lls.length;i++){ var arr = lls[i]; var lonlat = new OpenLayers.LonLat(arr[0],arr[1]); markers = autoAddMarker(lonlat,i); } map.addLayer(markers); } function getIcon(){ var size = new OpenLayers.Size(21,25); var offset = new OpenLayers.Pixel(-(size.w/2),-size.h); var icon = new OpenLayers.Icon('img/marker.png',size,offset); return icon; } function autoAddMarker(lonlat,i){ var marker = new OpenLayers.Marker(lonlat,getIcon()); marker.events.register("click", marker, function(evt){ evt = getEvt(i); window.location.href=evt+".html"; }); markers.addMarker(marker); return markers; } function getEvt(i){ var evt=null; if(i==0){ evt="Test2"; }else if(i==1){ evt="Test3"; }else if(i==2){ evt="Test4"; }else if(i==3){ evt="Test5"; }else if(i==4){ evt="Test6"; } return evt; } </script> </head> <body onload="init()"> <div id="map" style="width:500px;height:500px;"></div> </body> </html>
好了,到此为止!贴别要感谢那些在网上分享学习经验的前辈们,正是你们的分享才让我们这些后来的学习者更快的学习。谢谢!
相关推荐
介绍了openlayers的一些典型例子,对学习openlayers很有帮助
使用openLayers调用geoServer发布的地图数据,并实现放大、缩小、移动、测距、测面积、弹出信息等功能; 需要修改geoServer路径,我的是安装在本地的; 还有部分功能未完成;
openlayers3 画线,画扇形图, 能正常运行的小例子,
对于openlayers 3自带例子很详细的说明
OpenLayers 是由MetaCarta公司开发的,用于WebGIS客户端的 JavaScript包,目前的最高版本是2.5 V,通过BSD License 发行。它实现访问地理空间数据的方法都符合行业标准,比如 OpenGIS的WMS和WFS规范, OpenLayers...
Openlayers经典例子.doc,Openlayers经典例子.doc
map map openlayers例子
openlayers简单实用例子 9 关于TileCache函数 13 openlayers 有函数说明的类图 14 go 14 Maker 一多,客户端就死掉 15 OpenLayers 怎么实现 AJAX 16 openlayer 要怎么研究才会应用得比较自如 16 改良OpenLayers的...
使用openlayers加载离线地图实例,可通过mui打包成app。简单,易上手
openlayers使用imageCanvas加载矢量元素
使用openlayers展示对象的移动轨迹
关于openlayers开发的一个中文手册,供大家学习。
使用说明 在加载ol3toolkit.js前先加载js文件夹里的其他引用包和css,然后在script中简单设置OL3ToolkitOptions对象即可。如 > var OL3ToolkitOptions = {zoomLevel: 10, viewCenter:[120,30]}; 具体实例请参照...
关于OpenLayers一周研究成果,内有OpenLayers2.13、OpenLayers3的源码以及加载百度谷歌地图的源码,如何定位,如何画线,生成多边形等源码,以及OpenLayers2.13的中文接口文档。OpenLayers基础教程。
该资源适合初级同学对geosever图层进行编辑的功能,可以下载使用,该资源能满足openlayers对geoserver图层的查询、编辑、新增,删除等操作
OpenLayers经典例子
这是一个关于OpenLayers 3使用的入门教程。帮助初学者逐步认识OpenLayers 3,理解地图组成,以及各个组成部分的作用。在此基础上,逐个突破,结合大量的实例,指导大家应用OpenLayers 3开发出符合业务的地图。在这个...
OpenLayers OpenLayers Beginner's Guide
asp.net mvc openlayers小程序,openlayers负责地图浏览,画点线面,json,wkt负责前后台的空间数据传递。
openlayers开发工具 openlayers api openlayers openlayers api 开发工具 支持多种地图加载展示