赞
踩
openlayers是一个开源免费的js库,用于在网页中实现地图的动态显示和交互。一起看看官方对openlayers的介绍。
OpenLayers makes it easy to put a dynamic map in any web page. It can display map tiles, vector
data and markers loaded from any source. OpenLayers has been developed to further the use of
geographic information of all kinds. It is completely free, Open Source JavaScript.
需要注意的是openlayers2(以下简称ol)和ol3以上的版本有很大的差异,以最新版5.2.0为例,展开对ol的学习。
为了方便,下载ol 5.2.0,将ol.js和ol.css解压出来。
首先,引用ol.css和ol.js,因为我们已经下载了ol库,所以使用ol的本地路径就行了,如果网络方便,可以直接在从ol网站获取。
<script src="https://cdn.rawgit.com/openlayers/openlayers.github.io/master/en/v5.2.0/build/ol.js"></script>
<link rel="stylesheet" href="https://cdn.rawgit.com/openlayers/openlayers.github.io/master/en/v5.2.0/css/ol.css" type="text/css">
首先从一个例子入手:
<!doctype html>
<html lang="en">
<head>
<link rel="stylesheet" href="js/ol/ol.css" type="text/css">
<style>
.map {
height: 400px;
width: 100%;
}
</style>
<script src="js/ol/ol.js"></script>
<title>OpenLayers example</title>
</head>
<body>
<h2>My Map</h2>
<div id="map" class="map"></div>
<script type="text/javascript">
var map = new ol.Map({
target: 'map',
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
view: new ol.View({
center: ol.proj.fromLonLat([103.73,36.03]),
zoom: 8,
minZoom:5,
maxZoom:12
})
});
</script>
</body>
</html>
关于这段代码:
这段代码的作用是在网页是显示一个地图;
和leaflet一样,地图必须显示在一个div中,因此首先创建一个div;
target:'map'
指定了地图要显示在id为map的div中;
new ol.layer.Tile({ source: new ol.source.OSM() })
定义了一个图层,数据来源是OpenStreetMap提供的切片数据;
new ol.View({ center: ol.proj.fromLonLat([37.41, 8.82]), zoom: 4 })
定义了地图的中心位置,范围和层级。
ol.proj.fromLonLat([37.41, 8.82])
是将一个经纬度坐标转换成当前地图投影的坐标;
fromLonLat(coordinate, opt_projection)
coordinate:经纬度坐标
projection:目标投影,默认Web Mercator, 即 ‘EPSG:3857’
一个Map
,必须有target,layers和view。
上面涉及的地图组成部分有:
对比leaflet显示一个地图的过程,两者的代码确实有比较大的差异,但是其思路是一样的:
1.创建放置地图的div;
2.从某个数据源获得数据创建layer;
3.确定地图的中心位置,层级;
4.创建map,将数据渲染到网页中。
监听地图事件:on(type,listener)
只监听一次:once(type,listener)
注销监听:un(type,listener)
如果要在上面地图中实现单击显示经纬度功能:
map.on('click',function (e) {
var coor=e.coordinate
var lonlat=ol.proj.transform(coor,'EPSG:3857',"EPSG:4326")
alert("lon:"+lonlat[0].toFixed(2)+",lat:"+lonlat[1].toFixed(2));
})
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。