`
影非弦
  • 浏览: 51970 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于OpenLayers的初步使用小例子

阅读更多

    刚开始接触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>

 好了,到此为止!贴别要感谢那些在网上分享学习经验的前辈们,正是你们的分享才让我们这些后来的学习者更快的学习。谢谢!

  • 大小: 104.7 KB
分享到:
评论
3 楼 yan56hao7 2014-11-20  
2 楼 qiaoqq 2014-05-07  
我应该早点过来
1 楼 diwuci 2013-09-13  

相关推荐

    geoServer+openLayers简单小例子

    在"geoServer+openLayers简单小例子"中,OpenLayers被用来调用通过GeoServer发布的地图数据。这通常涉及到以下几个步骤: 1. **配置GeoServer**:首先,你需要在本地安装GeoServer并配置它来发布你的地图数据。这...

    openlayers典型例子展示

    "OpenLayers典型例子展示" OpenLayers是一款基于Web的GIS(Geographic Information System)映射库,提供了强大的地图展示和交互功能。下面我们将通过一些典型例子,展示OpenLayers的强大功能和多样化的应用场景。 ...

    openlayers3画线功能例子

    在这个"openlayers3画线功能例子"中,我们将深入探讨如何利用OpenLayers 3来实现地图上的线条绘制,包括直线和扇形图。 首先,要实现画线功能,我们需要在HTML文件中引入OpenLayers库的CDN链接或者本地文件。接着,...

    使用openlayers加载离线地图实例

    在“使用openlayers加载离线地图实例”中,我们需要考虑以下关键步骤: 1. **设置HTML结构**:首先,创建一个HTML文件作为应用的基础,引入OpenLayers库和其他必要的CSS和JavaScript资源。确保OpenLayers库的路径...

    openlayers的各种例子

    OpenLayers 是由MetaCarta公司开发的,用于WebGIS客户端的 JavaScript包,目前的最高版本是2.5 V,通过BSD License 发行。它实现访问地理空间数据的方法都符合行业标准,比如 OpenGIS的WMS和WFS规范, OpenLayers...

    Openlayers经典例子

    OpenLayers 是一个强大的开源JavaScript库,用于在网页上创建交互式的地图应用。它支持多种地图服务,包括WMS、WMTS等,并提供了丰富的功能,如图层管理、标记、弹窗、编辑工具等。以下是一些OpenLayers的经典实例...

    map map openlayers例子

    在"map map openlayers例子"中,我们主要探讨的是如何使用OpenLayers创建和操作地图。首先,我们需要引入OpenLayers库的JavaScript文件。通常,这可以通过CDN链接或者本地文件引用完成。例如: ```html ...

    webgis之OpenLayers地图使用教程合集_极品.zip

    "openlayers使用笔记1 从例子开始学习openlayers - Java&GIS - BlogJava.url"是一篇从实践出发的学习笔记,适合初学者。它可能通过一系列实例,逐步引导读者理解OpenLayers的基本操作,如添加图层、设置地图中心点、...

    openlayers 调用百度地图

    使用上面的`baiduSource`创建一个OpenLayers图层: ```javascript var baiduLayer = new ol.layer.Image({ source: baiduSource }); ``` 6. **设置地图和视图**: 创建`ol.Map`实例,并设置视图的中心点和...

    openlayers 编辑geoserver图层

    本资源主要针对初级学习者,介绍如何使用OpenLayers对GeoServer图层进行编辑。 首先,让我们了解OpenLayers。OpenLayers提供了一个灵活的API,用于创建交互式的地图应用。它可以加载多种地图源,包括WMS(Web Map ...

    使用openlayers展示对象的移动轨迹

    这需要使用OpenLayers的动画功能和定时器。在每个时间步长,更新地图的视图以移动到下一个轨迹点。 至此,我们就成功地用OpenLayers展示了对象的移动轨迹。这个过程涉及到地图的初始化、数据加载、图层创建、样式...

    openLayers geoserver常见问题

    OpenLayers的例子通常包括基本地图加载、图层管理、标记添加、弹窗显示等,可以通过官方文档找到许多示例代码进行学习。 关于TileCache函数,如getTilesUrl(),用于返回对应坐标范围的瓦片URL,是TileCache服务的...

    Openlayers经典例子.doc

    ### Openlayers经典例子知识点概述 #### 一、Popup(弹出窗口) 在Web地图应用中,弹出窗口常被用于展示特定地理位置上的信息。通过OpenLayers提供的`Popup`功能,开发者能够轻松地在地图上添加交互式的弹出窗口。...

    微信小程序-针对Openlayers3写的一套快速调用的小程序

    使用说明 在加载ol3toolkit.js前先加载js文件夹里的其他引用包和css,然后在script中简单设置OL3ToolkitOptions对象即可。如 &gt; var OL3ToolkitOptions = {zoomLevel: 10, viewCenter:[120,30]}; 具体实例请参照...

    openlayers中文.rar

    - **瓦片(Tiles)**:OpenLayers可以使用瓦片服务来提高地图加载速度,将大地图分割成小块加载。 2. **OpenLayers的使用步骤**: - **引入库文件**:在HTML文件中添加OpenLayers库的链接。 - **创建Map对象**:...

    openlayers 3 例子中文解析

    ### OpenLayers 3 示例中文解析 #### 1. 局部化OpenStreetMap与不同层级显示地图 - **知识点:** - **OpenStreetMap**:一个免费且开放的地图项目,用户可以贡献地理数据。 - **地图层级控制**:通过调整地图的...

    OpenLayers v5.3.0 release

    4. **例子(Examples)**:压缩包中的"examples"目录包含了各种示例代码,展示如何使用OpenLayers创建不同类型的地图应用。这些实例是学习和理解库功能的好资源,涵盖了从基本的地图加载到复杂交互的各种场景。 5. ...

    关于OpenLayers一周研究

    关于OpenLayers一周研究成果,内有OpenLayers2.13、OpenLayers3的源码以及加载百度谷歌地图的源码,如何定位,如何画线,生成多边形等源码,以及OpenLayers2.13的中文接口文档。OpenLayers基础教程。

    asp.net mvc openlayers入门小程序

    在这个入门程序中,开发者可能会学习到如何在ASP.NET MVC控制器中处理地图相关的请求,如何生成JSON或WKT响应,以及如何在视图中使用JavaScript和OpenLayers API来显示和操作地图。同时,他们还需要了解如何配置和...

Global site tag (gtag.js) - Google Analytics