(OpenLayers DEMO)点击下载

本案例介绍如何在离线(单机、或局域网无Internet)状态下发布离线地图,且结合OpenLayers做基于地图的二次开发。

一、   离线地图数据下载

离线地图下载,可以使用bigemap地图下载器全能版(下载地址http://www.bigemap.com/reader/download/detail201802015.html)。

打开bigemap地图下载器,左上角“选择地图”选择谷歌地球,右上角“选择行政区域”我们选择四川省为例,如下图所示:

双击下载,此次注意选择“存储选项”选择,“瓦片:bigemap”,勾选下载级别。

至此,离线地图即下载完毕,基础数据准备完成,我们可以打开下载目录简单查看瓦片目录。

二、   发布离线地图服务

基础数据准备完毕后,我们通过bigemap离线地图开发工具将地图瓦片发布成OGC协议的wmts服务,(下载地址:http://www.bigemap.com/reader/download/detail2020040918.html)。

打开离线地图开发工具,选择“添加离线地图”,如下图:

第二步:选择“添加离线地图”,弹出如下对话框

地图名称:四川地图 (工具你自己的需要任意命名)

瓦片库文件:选择后面的浏览,找到你下载的离线地图瓦片,里面有个map.ini文件,选择这个文件,如下图:

创建完成,我们即可通过“浏览”按钮,在浏览器中查看刚才发布的离线地图。

浏览结果如下:

一、   基于OpenLayer加载WMTS地图服务及二次开发

接下来是下载openlayers了,我们给处理具体的案例代码和OpenLayer包(点击下载),到时候大家可自行下载。

这里采用了OpenLayers2为例,

引用Openlayers如下:

设置坐标系统和中心点位置

源代码:openlayers.html

<!DOCTYPE html>

<html>

<head>

<title></title>

<link rel="stylesheet" href="ol.css" type="text/css">

<script src="ol.js"></script>

</head>

<body>

<div>

&nbsp;选中的经纬度:

<input id="Coordinates" type="text" value="" disabled="disabled" style="width: 350px;" />

</div>

<div id="map" class="map"></div>

<div id="div_overlay" style="display: none;">

<div id="marker" title="">

<img src="position_orange.png" />

</div>

<div id="popup" title=""></div>

</div>

<script>

var projection = ol.proj.get('EPSG:4326');//设置坐标系

var projectionExtent = projection.getExtent();

//分辨率

var resolutions = [

1.40625,

0.703125,

0.3515625,

0.17578125,

0.087890625,

0.0439453125,

0.02197265625,

0.010986328125,

0.0054931640625,

0.00274658203125,

0.001373291015625,

0.0006866455078125,

0.00034332275390625,

0.000171661376953125,

0.0000858306884765625,

0.00004291534423828125,

0.000021457672119140625,

0.000010728836059570312,

0.000005364418029785156,

0.000002682209014892578,

0.000001341104507446289

];

//瓦片矩阵

var matrixIds = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20];

var centerXY = "104.06644285, 30.66445112";//地图中心点,默认成都

var center = ReturnCenter(centerXY);

var emap_attributions = new ol.Attribution({

html: '<span class="span_switch" οnclick="ChangeToImgMap()">点击切换地图类型</span>'

});

function EMap() {

var map = new ol.Map({

controls: ol.control.defaults({

attribution: false

}).extend([

new ol.control.MousePosition()//是否显示鼠标所在地图点的经纬度

]),

layers: [

new ol.layer.Tile({

source: new ol.source.WMTS({

attributions: emap_attributions,

name: "四川卫星地图1-14级",

url: "http://localhost:9002/bigemap.8rs3s73l/wmts?access_token=pk.eyJ1IjoiY3VzXzA3dDJoaHZtIiwiYSI6ImR6NmRxd3F5emE2dmVrd243bzZiZGhuY2oiLCJ0IjowfQ.wm7CMiycFDUYAMRbaJ-wYMJFGhE_ybWcoSn5c-UuSPo",

layer: "bigemap.google-earth",

style: "default",

matrixSet: "4to10",

format: "image/png",

//wrapX: true,//地图缩小后,防止在一个页面出现多个一样的地图

tileGrid: new ol.tilegrid.WMTS({

origin: ol.extent.getTopLeft(projectionExtent),

resolutions: resolutions.slice(0, 15),//slice方法不清楚的请百度

matrixIds: matrixIds.slice(0, 15)

})

}),

maxResolution: resolutions[0],

minResolution: resolutions[14]

})

],

target: "map",

view: new ol.View({

center: center,//地图中心点

projection: projection,//投影类别

zoom: 10,//默认缩放级别

maxZoom: 20,//最大缩放级别

minZoom: 1//最小缩放级别

})

});

//鼠标点击时设置中心点覆盖物

GetElementId("map").onclick = function () {

coordinates = GetElementsByClassName('ol-mouse-position')[0].innerHTML;

SetPosition(map, coordinates);

};

}

EMap();//显示E电子地图

function GetElementId(id) {

return document.getElementById(id);

}

function GetElementsByClassName(className) {

return document.getElementsByClassName(className);

}

//中心点处理

function ReturnCenter(centerXY) {

var centerObj = centerXY.split(',');

var centerX = centerObj[0];

var centerY = centerObj[1];

return [parseFloat(centerX), parseFloat(centerY)];//一定要转换下类型,否则拖拽后,地图就消失了

}

//设置中心点覆盖物

function SetPosition(map, coordinates) {

GetElementId("Coordinates").value = coordinates;

var newcenter = ReturnCenter(coordinates);

// Position marker

var marker = new ol.Overlay({

position: newcenter,

positioning: 'bottom-center',

element: document.getElementById('marker'),

stopEvent: false

});

map.addOverlay(marker);

}

</script>

</body>

</html>

创建wmts服务:打开bigemap离线地图开发工具,找到四川省地图,选择“开发使用”,选择“WMTS服务”

使用浏览器打开wmts服务地址,配置如下几个选项(这几个选项对应到OpenLayer里面的具体参数

如下图所示,将WMTS的具体参数设置到OpenLayer

设置鼠标事件,显示经纬度

完成后,运行界面如下:

Openlayers离线地图二次开发相关推荐

  1. 离线地图二次开发(支持所有地图源)

    离线地图二次开发(支持所有地图源) 发布时间:2019-03-12 版权: 离线地图开发 支持 局域网内二次开发:也支持公网二次开发,借助离线开发包,可以很快将地图应用到不同的项目当中,包括WEB开发 ...

  2. 百度高德离线地图二次开发入门步骤

                  1.搭建离线地图开发环境               2.下载离线地图数据(金字塔瓦片数据)               3.离线地图二次开发接口(离线地图API)     ...

  3. BIGEMAP(百度、高德、谷歌)离线地图二次开发

    (百度.高德.谷歌)离线地图二次开发 发布时间:2019-04-10 版权:               1.如何搭建离线地图开发环境               2.下载离线地图数据(金字塔瓦片数据 ...

  4. (百度、高德、谷歌)离线地图二次开发

    (百度.高德.谷歌)离线地图二次开发 发布时间:2019-04-10 版权: 相关链接:三维(3D)离线地图 二次开发                               1.如何搭建离线地图 ...

  5. 快速搭建离线地图开发环境(局域网地图开发工具)离线地图二次开发

         相关下载:For Linux版本下载   快速搭建离线地图开发环境     局域网地图服务   离线地图数据服务  二次开发 一.软件介绍     BIGEMAP离线地图服务器,提供一站式搭 ...

  6. BIGEMAP通过离线地图二次开发接口(离线地图API)

    用法示例 示例 // 使用id为map的div容器初始化地图,同时指定地图的中心点和缩放级别BM.Config.HTTP_URL = ''; var map = BM.map('map','mapid ...

  7. Vue-cli3实现web百度离线地图(v3.0)开发

    需求 实现基于Vue-cli3的web百度离线地图(v3.0)开发 Vue-cli3,目录如下,注意:需要把地图相关的文件放在public下,vue-cli2需要放在static下!!! 参考 主要参 ...

  8. 【基于蜂鸟地图二次开发工具,方便开发者快速开发业务】

    基于蜂鸟地图二次开发工具 lmfmap v0.0.1 开发 lmfmap v0.0.1 基于蜂鸟地图二次封装的工具,让开发者用最少的代码开发自己的业务,让业务和地图解耦,业务提供数据地图提供接口交互 ...

  9. vue中使用openlayers离线地图添加标点(二)

    接上一篇初始化地图文章 很多时候我们不只是需要单纯的看地图,那就太没意思了,当有标点位需求的时候呢就可以往下看啦. 1.需要引入标点所需的方法 这里替换上篇文章的引入即可 import 'ol/ol. ...

最新文章

  1. linux 创建虚拟IP
  2. pyecharts 应用6 三维曲面图
  3. KDD_CUP99数据集处理和测试(已处理数据可下载)
  4. 【Python金融量化 2- 100 】股票量化分析基本知识
  5. boost::contract模块实现vector的测试程序
  6. 一篇文章让你了解灾备指标:RPO与RTO
  7. Java修炼之路——基础篇——值传递
  8. 如何对待基金评审负面意见?
  9. SSM框架笔记07:初探Spring——采用XML配置文件与注解方式
  10. java map isempty_Java HashMap isEmpty() 使用方法及示例
  11. 原型即对象(以及认识这点的重要性)
  12. poj 1681 Painter's Problem (高斯消元 )
  13. bool类型数组转换成一个整数_Python如何处理数据?如何把数据转换成我们想要的?三种处理方法...
  14. 蓝桥每日真题之完全平方数
  15. 磁盘分区和目录的区别是什么
  16. a form 出口享惠情况_关于“出口享惠情况”如何填报?
  17. 用友ERP实施流程(不是本人所写,只是个搬运工!)
  18. 关于EPCS系列芯片的说明
  19. wine linux 目录,linux中wine的安装及使用
  20. delphi 7无法运行提示 Borland license information was found, but it is not valid for Delphi

热门文章

  1. linux如何解压deb文件,Linux下常用文件解压(包括rpm、deb包的解压方法!)
  2. zsh和bash的区别
  3. 智能畜禽养殖系统解决方案功能说明
  4. Dplayer使用注意点
  5. 小米Wifi放大器连接网件路由器
  6. 覆盖桌面壁纸类似现在的一些桌面壁纸软件包括换HTML壁纸功能
  7. 通用协议(五)两方安全计算
  8. SAP 呆滞库存的计算
  9. 0430课堂笔记--标识符-数据类型
  10. 魅族pro7plus android10,魅族PRO7 Plus做工怎么样?魅族PRO 7 Plus全面拆解评测