openLayers绘制静态底图

因为项目须要,须要是使用openlayers框架,因而开始安利一波openlayers,能够点击 https://openlayers.org/   进入他的官网下载相关资源和案例javascript

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

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

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

<!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连接有点卡,能够先下载对应的资源本地引入java

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

 

 到此你就成功的创建了一个map框架

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

接下来咱们渲染一下自定义的静态图片学习

使用的是openlayers的 ol.layer.Image, 话很少说直接上代码,哈哈ui

将上面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进行验证

相关文章
相关标签/搜索