openlayers第一天,加载高得地图
废话少说,先上代码,以下代码中非js部分是从官网拷贝,官网也有诸多例子可供学习。
<!DOCTYPE html>
<html>
<head>
<title>Accessible Map</title>
<link rel="stylesheet" href="https://openlayers.org/en/v4.6.5/css/ol.css" type="text/css">
<script src="https://openlayers.org/en/v4.6.5/build/ol.js"></script>
</head>
<body>
<div id="map" class="map" tabindex="0"></div>
<script>
var satelliteGaodeMap = new ol.layer.Tile({//卫星图
source: new ol.source.XYZ({
crossOrigin: 'anonymous',
url: 'http://wprd0{1-4}.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}'
})
});
var baseGaodeMap = new ol.layer.Tile({//标准地图
source: new ol.source.XYZ({
crossOrigin: 'anonymous',
url: 'http://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}'
})
});
var roadGaodeMap = new ol.layer.Tile({//路网图
source: new ol.source.XYZ({
crossOrigin: 'anonymous',
url: 'http://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}'
})
});
var bounds = [116.38657515099074, 39.90773664369626, 116.41161625435377, 39.92026792421384];
var projection = new ol.proj.Projection({
code: 'EPSG:4326',
units: 'degrees',
axisOrientation: 'neu'
});
var view = new ol.View({
projection: projection,
maxZoom: 20
});
var map = new ol.Map({
target: 'map',
layers: [
baseGaodeMap,
// satelliteGaodeMap,
// roadGaodeMap
],
view: view
});
map.getView().fit(bounds, map.getSize());
</script>
</body>
</html>
如果你是个心急的人,想必已经复制代码粘贴进文件然后打开浏览器看到了效果。
如果你还没有这么做,我建议你先运行看一下效果,然后你才有继续阅读下去的理由。
如果你看到错误结果,请一定留言告诉我因为我亲测后结果绝对是正确的。
看一下ol3的架构
- Map:地图空间,一切的基础
- Layers:图层,包括Image图像、Tile瓦片、Vector矢量等类型
- View:可视区域,结构图上面并没有,不过这是很重要的一部分
- Controls:控件,各种小工具
代码详解
var satelliteGaodeMap = new ol.layer.Tile({//卫星图
source: new ol.source.XYZ({
crossOrigin: 'anonymous',
url: 'http://wprd0{1-4}.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}'
})
});
var map = new ol.Map({
target: 'map',
layers: [
baseGaodeMap,
// satelliteGaodeMap,
// roadGaodeMap
],
view: view
});
Tile表示是瓦片图,也就是分多次请求每次返回一块,然后组合完整的地图。
每一个图层都必须有source,也就是数据源,url,这里我用了三个,分别是高得的卫星图、标准地图和路网图,其实这三者最大的区别就是source中url不同,url最大的不同是参数中style的值,分别为6,7,8。
map中的注释打开就可以显示出对应的图层,靠后的图层会覆盖上一级,可以使用图层的baseGaodeMap.setVisible(false)
进行隐藏,map显示图层也可以使用map.addLayer(baseGaodeMap)
动态添加。
bounds是当前缩放范围