• ol3开发离线地图


    注意:国内地图均经过加密,尤其是百度地图,经过了二次加密,通常情况下都会存在偏差。所以最好是利用地图下载器下载后面带有“无偏差”的地图,否则需要对经纬度进行转化。

    1、需要的前端库文件有jquery.js、ol.js、ol.css。网上百度一番不难找,实在找不到的可以留言我发给你。

    2、需要有地图的瓦片图。网上有各类工具:全能电子地图下载器,水经注地图下载器等等,可以免费将百度、谷歌、高德、腾讯等的地图制作成瓦片图后下载下来。同上,百度一番不难找,实在找不到可以留言。

    3、首先在body中定义一个div用以存放地图,注意需要设置id

    <div id="map" style=" 80%;height: 80%;"></div>

    4、js实现加载地图

    第一个参数[111.36,26.25]为地图的中心位置,后面的两个参数是地图的坐标系,ol3默认情况下是3857,我们需要把经纬度从4326转化为3857。这样才不会错位。
    var center = ol.proj.transform([111.36, 26.25], 'EPSG:4326', 'EPSG:3857');
    设置离线地图的图层。通常我们下载下来的地图都会是类似d://roadmap/z/y/x.png这样的格式,其中zyx为数字,或是数据加一个字母,z代表图层,y代表y轴,x代表x坐标
    将下载下来的地图放到项目里面,url设置对应的路径 var offlineMapLayer = new ol.layer.Tile({ source: new ol.source.XYZ({ url: 'roadmap/{z}/{x}/{y}.png' }) });

    ol3中一个完整的地图至少需要3个要素:1、图层layers,可以同时设置多个图层,按照先后顺序进行覆盖;2、中心坐标;3、地图容器

    // 创建地图
    var map = new ol.Map({
          // 设置地图图层
          layers: [
           offlineMapLayer//将我们上一步设置好的离线地图加载进来
          ], 
          // 设置显示地图的视图
          view: new ol.View({
            //projection: 'EPSG:4326',
            center: center,    // 将之前定义好的中心点放进来
            zoom: 10,      //设置地图默认展开到第10个图层,即默认z=10
          }),
          // 让之前id为map的div作为地图的容器
          target: 'map',
    });

    完成以上步骤,一个最简单的离线地图就完成了。

  • 相关阅读:
    [LeetCode] 5. 最长回文子串
    [LeetCode] 572. 另一个树的子树
    [LeetCode] 983. 最低票价
    [LeetCode] 98. 验证二叉搜索树
    [LeetCode] 3. 无重复字符的最长子串
    [LeetCode] 21. 合并两个有序链表
    [LeetCode] 202. 快乐数
    [LeetCode] 面试题 01.07. 旋转矩阵
    [LeetCode] 面试题56
    个人网站实现支持https
  • 原文地址:https://www.cnblogs.com/yxth/p/6496866.html
Copyright © 2020-2023  润新知