openlayers第一天


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是当前缩放范围

openlayers第一天,从加载高德地图作为地图开始

转载自:https://blog.csdn.net/m0_37659871/article/details/80513895

You may also like...

退出移动版