openLayers绘制静态底图


由于项目需要,需要是使用openlayers框架,于是开始安利一波openlayers,可以点击 https://openlayers.org/   进入他的官网下载相关资源和案例

学习的过程总是慢慢来的,先就不在vue react等一下js框架下使用了,直接上html,哈哈

首先去他官网里,https://openlayers.org/en/latest/doc/quickstart.html  进入快速开始界面,就是所谓的hello world 

然后开始敲代码,在本地新建一个index.html

<!doctype html>
<html lang="en">

<head>
    <script src="./js/ol.js"></script>
    <link rel="stylesheet" href="./js/ol.css" type="text/css">
    <style>
        .map {
            height: 400px;
            width: 100%;
        }
    </style>
    <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([37.41, 8.82]),
          zoom: 4
        })
      });
    </script>
</body>

</html>

然后编写以上代码,要是你直接用他官网上的cdn链接有点卡,可以先下载对应的资源本地引入

接着打开这个页面,你会看到如下界面

 

 到此你就成功的建立了一个map

注意:一个map里必不可少的参数是target--dom节点,view视图, layers图层

接下来我们渲染一下自定义的静态图片

使用的是openlayers的 ol.layer.Image, 话不多说直接上代码,哈哈

将上面index.html中的script里的代码修改成如下界面

<script type="text/javascript">
        //地图设置中心,设置到成都,在本地离线地图offlineMapTiles刚好有一张zoom为4的成都瓦片
        var center = ol.proj.transform([104.06667, 30.66667], 'EPSG:4326', 'EPSG:3857');
        //计算静态地图映射到地图上的范围,图片像素为550*344,保持比例的情况下,把分辨率放大一些
        var extent = [
            center[0] - 550 * 1000 / 2,
            center[1] - 344 * 1000 / 2,
            center[0] + 550 * 1000 / 2,
            center[1] + 344 * 1000 / 2
        ];
        var map = new ol.Map({
            target: 'map',
            view: new ol.View({
                center: center,
                zoom: 8,
                minZoom: 5,
                maxZoom: 12
            })
        });
        //加载静态图层
        map.addLayer(new ol.layer.Image({
            source: new ol.source.ImageStatic({
                url: './images/1S1F.png', // 静态地图
                imageExtent: extent          //映射到地图的范围
            })
        }));
    </script>

然后,刷新页面,你会看到如下界面

 

 由于,签了保密协议,所以我的一下厂区的底图无法截图出来,你可以跟换ol.source.ImageStatic 中的url进行验证

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM