内网离线地图

2023-11-07

1.第一种瓦片数据源
MapDownloader:
链接:https://pan.baidu.com/s/1Hz__HcA5QhtGmjLNezC_pQ
提取码:6lek
GISMysqlToLocalFile:
链接:https://pan.baidu.com/s/1rzVsj_DJxKr6OyvRwve4dg
提取码:pp6f
自测可以使用
教程来自:https://www.cnblogs.com/kanyun/p/8571711.html
使用 Leaflet 加载地图瓦片:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>web 版离线地图测试页面</title>
    
    <link rel="stylesheet" href="https://unpkg.com/leaflet@1.4.0/dist/leaflet.css" />    
    
</head>
<body>

    <div id="map" style="width:90%;height:600px;margin-top:30px;text-align:center;margin:0 auto;">
    </div>

    <script src="https://unpkg.com/leaflet@1.4.0/dist/leaflet.js"></script>
    
    <script type="text/javascript">
        window.onload=function () {
            var map = L.map('map').setView([34.3195,108.9131], 11);
            L.tileLayer('./map/{z}/{x}/{y}.png' //瓦片路径
                , {
                    minZoom: 1,
                    maxZoom: 18,
                    attribution: '<b style="color:#dddddd">百度地图</b>'
                })
            .addTo(map);
            
        };    
    </script>
    
</body>
</html>

leaflet更多复杂操作可以查看中文文档:
https://blog.csdn.net/YXWik/article/details/103389800

2.第二种瓦片数据源
全能电子地图下载器(破解版)
链接:https://pan.baidu.com/s/1EBa0Ck8UGiFK0G7DCUhw1w
提取码:i8yc
自测可以使用
教程来自:https://blog.csdn.net/qq_41619796/article/details/90241491
3.第三种来源网上,需要自测
来源:https://www.jianshu.com/p/ad9ce1b3c442

内容:
Web GIS离线解决方案:
在CS系统中可以基于GMap.Net来做,参考《百度谷歌离线地图解决方案》

下面介绍下Web系统如何使用GIS切片数据,开发web GIS系统。

首先开发web GIS 主要是采用一些前端框架,目前主流的gis前端框架是 openlayers 和 Leaflet 至于两者优劣,读者可自行百度,我在项目中使用的是 Leaflet

打开地图下载器(工具在底部的github项目里,可自行下载)

找到 MapDownloader.exe.config 文件 进行修改
在这里插入图片描述

具体的就是修改我红框中的内容:该数据库地址,用户名密码等扽,改成自己的就行

修改保存,双击 在这里插入图片描述

然后做一些设置
在这里插入图片描述

首先选择mysql数据库,其次选择你要下载地图的地方,我这里选择的是北京,根据自己的需求进行选择,选择的位置过大,下载的时间就会很长

接下来选择地图,这一步操作十分重要我在这一步耽误了很长时间,一开始的时候没有选择地图,结果出现地图不显示的情况,后台换百度,谷歌都不行,换了高德就没问题了,个人可以依情况选择

在这里插入图片描述

就是这个菜单,选择需要下载的地图提供方,选择完毕之后,双击弹出提示框

在这里插入图片描述

这是让你选择下载的级别,通俗来说就是地图的精细程度,级别越大地图就能显示的越精准,需要注意的是,当级别超过15,地图的数据量会特别大,这里给出级别为15的地图的样子,个人可以根据情况来判定

级别选到15大概就是这个样子
在这里插入图片描述

等待下载完成之后,进入你的mysql 数据库 发现新建了一张数据表

在这里插入图片描述

接下来要做的就是把这张数据库表的数据,导出成瓦片地图(其实就是一张张有规律的256*256图片)

打开 GISMysqlToLocal.exe(后面会给出下载地址)
在这里插入图片描述

在这里插入图片描述

该填写的填写完整,然后点击导出就可以导出图片了,导出完成后,进入你导出的文件夹内 ,可以看到导出的内容是这样的
在这里插入图片描述
在这里插入图片描述

都是文件夹套文件夹的形式,然后会到导出的文件夹下,使用Ngix启动服务,也就是把这里图片都放到web服务器里面,你可以使用Nginx,也可以使用Apache,甚至于tomcat

这里我只介绍一下用tomcat配置静态资源访问

我们都知道tomcat可以配置静态资源和动态资源,但是实际工作过程中,我们都是把静态资源跟动态资源放到一个项目的源代码里,进行打包部署,那么对于我们的离线地图,静态资源是十分大的,

把离线地图跟我们的代码放到一个项目里面显然不现实,所以我们需要把静态资源放到其他路径

如:

/data/googlemaps

那我们把文件放到这个目录,浏览器如何访问呢,使用tomcat的话,在此处配置

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> 
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log."  
        suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> 
    <!--在Host标签下加入Context标签,path指的是服务器url请求地址(例如127.0.0.1/data), 
        docBase指的是服务器文件的路径,reloadable指的是在omcat不重启的情况下实时同步本地目录,
      一个虚拟主机下可以配置多个Comtext标签-->     
    <Context path="/" docBase="//usr/local/tomcat/webapps/officeMap"     reloadable="true" debug="0"  crossContext="true"/>
    <Context path="/googleMap" docBase="/data/googleMap" reloadable="true" debug="0" crossContext="true"/> 
</Host>

注意标注颜色的地方,一般我们都只是在Host标签下配置一个Context标签(你的应用),其实是可以配置两个标签,表示同一个端口的不同地址,重启tomcat之后,这样当你访问 http://localhost:8080/googleMap/hello.png,就可以访问静态资源了

当然你直接访问你的应用 localhost:8080 也是没有问题的

当然你习惯哪个都行(生产环境推荐Nginx,测试环境推荐使用tomcat,因为可以省的配置Nginx),只要我之后可以通过浏览器去访问就可以(我这里使用了一个http-server的一个工具,不过需要先安装Node,具体看个人需求了),启动完成之后,测试使用浏览器访问 具体就是 “ip+端口+路径” 能访问到图片说明服务已经启动成功, 暂且先不用管他

接下来编写html页面

第一步引入js css

标箭头的是必须要引入的

接下来

#定义一个DIV作为地图的容器,一定要为它设置wdith,height
<div id="map">


</div>

接下来写js

  var map
    #这个地址就是你刚才启动服务器的地址 788865972 代表你导出图片的最上层文件夹,这个文件夹也是自动生成的
    var osmUrl = 'http://localhost/788865972/{z}/{x}/{y}.png';
    var osmAttrib = '<b style="color:#dddddd">高德地图</b>';
    var osm;
    $(function () {

        osm = L.tileLayer(osmUrl, {
            minZoom: 5,
            maxZoom: 15,
            attribution: osmAttrib

        });
  map = L.map('map')
    .setView([39.908419, 116.397743], 10)
    .addLayer(osm);
 

以上就是地图的初始化方法:

写完之后,保存双击html 就应该可以看到地图了

在这里插入图片描述

红框是我后加的内容,至此离线地图基本已经创建完成了,要想实现更多的功能,比如地图搜索,地图标记可以看我的源码,以及官网的API

在这里插入图片描述

在这里插入图片描述

特别需要提一点的是关于离线地图的搜索,是需要你内网的数据库里面有位置信息,然后把第三方的位置信息抓取过来,放到自己的数据库里进行搜索等等,并非leafletjs所自有的

不过Leaflet的功能还是非常丰富的

可以自行到官网查看:http://leafletjs.com/

关于搜索的扩展功能,我的后台源码里已经写了,首先自己需要创建一张数据库表,此表需要有你抓取坐标的经纬度,名称,位置信息等字段,坐标抓取方法,可自行百度,单需要记住一点,你用地图下载器下载的什么地图,抓取坐标信息

就抓取哪个地图的坐标信息,我测试的数据是在网上下载的,如果你需要最新的数据,那么需要自己去抓取。我后台使用springboot写的,建表sql,已经下载地图工具都包含在里面了,直接下载源码,打开地图下载器,下载地图,然后导出瓦片图片

再抓取一些坐标信息,就可以看到地图,并且实现搜索功能了

源码连接:https://github.com/chenwuwen/OffineMap

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

内网离线地图 的相关文章

  • 高德离线地图vue-amap的api文档(2):创建地图,撒点等等

    前言 高德离线地图的使用场景还是很多的 但是他的api在国外 想参考api对网络差的朋友来说不是一件容易的事 对我来说一样 在这里整理下他的api内容 注 本文是将官网api挪动出来 网好的童鞋想看原版的请点击官网入口 目录 十七 搜索框
  • 阿里面试题:为什么Map桶中个数超过8才转为红黑树

    这是一个好友面试阿里时 被问到的一个问题 应该不少人看到这个问题都会一面懵逼 因为 大部分的文章都是分析链表是怎么转换成红黑树的 但是并没有说明为什么当链表长度为8的时候才做转换动作 第一反应也是一样 只能初略的猜测是因为时间和空间的权衡
  • 检查蓝牙是否连接

    检查蓝牙是否连接 private BroadcastReceiver mBlueToothReceiver new BroadcastReceiver Override public void onReceive Context conte
  • 每日一题:蒟蒻

    蒟蒻 题目 Daimayuan Online Judge map可以一一映射 按键值从小到大排序 AC代码 include
  • STL——map、set等红黑树结构的最后一个元素

    map set等背后由于红黑树的关系 插入元素后便成为 平衡 搜索树了 所以末尾元素默认为最大值 得到该值的方法 1 利用 rbegin 反向迭代器 int main int argc char argv map
  • (ros/navigation/slam_gmapping) map_server地图服务器

    http wiki ros org map server 概述 map server提供map server ROS节点 它提供地图数据作为一个ROS服务器 也提供map saver命令行功能 能动态生成保存到文件中的地图 地图格式 包中通
  • arcgis 发布wmts服务,弹出“服务器未做好发布准备”错误,解法。

    arcgis 发布wmts服务 总弹出 服务器未做好发布准备 之后 到arcgis server manage中找到服务发布工具启动 1 访问并登录管理器 http localhost 6080 arcgis manager 2 找到sys
  • Java常用对象API——Map集合

    java util 接口 Map
  • JavaScript学习笔记(11) map、reduce

    map map 方法定义在JavaScript的Array中 调用Array的map 方法 传入我们自己的函数 就可以得到结果 来一个例子 use strict function pow x return x x var arr 1 2 3
  • pgslql+shp+geoserver 实现用pg库导入shp地图文件,然后通过geoserver发布图层的效果

    首先 要有一个地图shp文件 然后 pg库地址 里面有pg库的安装包和依赖 这个加载进去会自动生成模板 还有geoserver的安装包和navicat premium12的破解版 百度网盘地址 https pan baidu com s 1
  • 免费获取省市县的shp,geojson文件

    整理下资料 需要做准备工作 1 一个全能地图下载 https blog csdn net qq 41619796 article details 90241491 可以获取边界坐标 2 获取文件的网站 http geojson io 3 G
  • Python 的 map、列表推导、循环效率比较

    话不多说 直接上代码 1 准备数据 三个列表 import time x x1 x2 for i in range 1000000 x append i x1 append i x2 append i 2 开始表演 2 1 for循环 st
  • C++中STL用法超详细总结

    目录 1 什么是STL 2 STL内容介绍 2 1 容器 2 2 STL迭代器 2 3 算法 2 4 仿函数 2 4 1 概述 2 4 2 仿函数 functor 在编程语言中的应用 2 4 3 仿函数在STL中的定义 2 5 容器适配器
  • 理解目标检测当中的mAP

    我们在评价一个目标检测算法的 好坏 程度的时候 往往采用的是pascal voc 2012的评价标准mAP 网上一些资料博客参差不齐 缺乏直观易懂的正确说明 希望这篇博文能够给大家一点帮助 mAP历史 目标检测的mAP计算方式在2010年的
  • 怎样为std::map的自定义key提供比较操作(一)

    stl的关联容器 map set 的key一般要求提供 lt 比较操作 假设我们有一个结构SomeKey struct SomeKey int a b 要想以SomeKey作为std map的key 需要为这个结构提供operator lt
  • JAVA--Map集合详解

    特点 该集合存储键 key 值 value 对 一对一对往里存 而且要保证键 key 的唯一性 Map集合和Set集合很像 其实Set集合底层就是使用了Map集合 什么时候使用Map集合 当数据之间存在映射关系时 优先考虑Map集合 Map
  • 最小外接矩形思路以及实现

    最小外接矩形 外接矩形计算 对一个凸多边形进行外接矩形计算 需要知道当前面的最大xy 和最小xy值 即可获得外接矩形 最小外接矩形计算 对凸多边形的每一条边都绘制一个外接矩形求最小面积 下图展示了计算流程 计算流程 旋转基础算法实现 旋转点
  • TextSymbol使用方法

    private var grapbiaozhu GraphicsLayer new GraphicsLayer grapbiaozhu clear map addLayer grapbiaozhu var gra Graphic new G
  • C++中 Map的了解与基本用法(代码演示+自我总结+map中一对多的用法)

    C 中 map的了解与基本用法 代码演示 一 map的基本认识 Map是STL的一个关联容器 它提供一对一 其中第一个可以称为关键字 每个关键字只能在map中出现一次 第二个可能称为该关键字的值 的数据处理能力 由于这个特性 它完成有可能在
  • java Map集合

    目录 一 介绍 二 HashMap 三 TreeMap 四 LinkedHashMap 一 介绍 Java中的Map是一种键值对的集合数据类型 用于存储无序的 不重复的键值对 它提供了快速的查找和访问功能 可以根据键来获取值 常见的Map实

随机推荐

  • vlunhub系列之Momentum2

    靶机Momentum2 如果主机发现发现不了ip地址请看这里 https hackergu com vulnhub ip arp scan主机发现nmap端口扫描 端口扫描 发现并没有可以利用的内容 我们使用dirb nikto 以及dir
  • 发html邮件乱码 java,Java发送邮件时标题和发件人乱码

    Java发送邮件时标题和发件人乱码 最近碰到一个问题 Java发送邮件时 查看邮箱结果 发件人及邮件标题正文全部乱码 通过翻阅资料 原因及解决方法如下 Set Subject 头字段 message setSubject MimeUtili
  • 基于 Web 实现 m3u8 视频播放的简单应用示例

    实现思路 将视频 MP4 等 转换为 M3U8 视频的服务 可以按照以下步骤进行操作 将视频 MP4 等 转换为 M3U8 在服务中 使用适当的工具 如 FFmpeg 将接收到的视频 MP4 等 转换为 M3U8 格式 这将生成一个包含视频
  • AMap + echarts、google map + d3.js分别实现数据可视化中的飞线图(迁徙图)

    首先肯定是给出demo啦 演示demo 直接到左侧选择框中选择View taxi flow里面随便选个日期 总体介绍 最近由于工作室项目需要做一个数据可视化平台 这个平台最终是交由国外人使用的 而国内的高德地图在国外是访问很慢 所以只能使用
  • 达梦sql优化:关于模糊匹配前后百分号的使用小结

    1 生成测试数据 CREATE TABLE TB LIKE A INT B VARCHAR2 100 INSERT INTO TB LIKE SELECT LEVEL LEVEL 太阳光 LEVEL FROM DUAL CONNECT BY
  • 【Arduino学习】函数解析

    setup 函数 用于初始化变量 设置针脚的输出 输入类型 配置串口 引入库文件等等 每次Arduino上电或重启后 setup函数只运行一次 loop 是循环函数 该函数在程 序运行过程中不断的循环 根据一些反馈 相应改变执行情况 Ser
  • linux-网络设备简单总结

    文章目录 前言 一 有线网络的连接篇 1 MII RMII 接口 2 MDIO 接口 3 RJ45 接口 4 PHY 二 网络驱动 前言 和原子哥一起学习Linux 开发环境 I MX6Ull开发板 参考书籍 正点原子 I MX6U嵌入式L
  • 石子合并(区间DP问题)

    题目描述 设有 N 堆石子排成一排 其编号为 1 2 3 N 每堆石子有一定的质量 可以用一个整数来描述 现在要将这 N 堆石子合并成为一堆 每次只能合并相邻的两堆 合并的代价为这两堆石子的质量之和 合并后与这两堆石子相邻的石子将和新堆相邻
  • 判断Neo4j查询语句的返回是否为空

    查找数据库中是否已有该组件 cypher1 match n name 0 return n format name print 运行 cypher1 cypher1 node list graph run cypher1 data prin
  • java两个key的map_JAVA对两个map进行处理

    我有两个map的大致结构如下 idmap 111 aaa 113 bbb 114 ccc 115 aaa 116 ddd shamap 1 aaa 2 bbb 3 ccc 4 ddd 需要得到的结果是 1 aaa 111 2 bbb 113
  • Java基础 --- 线程同步

    Java基础 线程同步 Race Condition问题 并发编程的三个概念 加锁解决race condition问题 ReentrantLock 更好的实现线程同步的方法 synchronized 和 volatile的区别 何时使用sy
  • 电容值及类型的选取

    滤波电容的大小的选取 印制板中有接触器 继电器 按钮等元件时 操作它们时均会产生较大火花放电 必须采用RC吸收电路来吸收放电电流 一般R取1 2k C取2 2 4 7 F 一般的10PF左右的电容用来滤除高频的干扰信号 0 1UF左右的用来
  • 基于springboot大学校园防疫与服务系统毕业设计源码111556

    基于springboot大学校园防疫与服务系统 摘 要 2019年12月19号中国武汉发生第一例新冠病毒的到来 大家都在听从政府的号召在居家隔离 不管是在城市还是在乡镇 农村 这引起我的注目 设计一套大学校园防疫与服务系统 疫情防控需要大家
  • 002——JDK

    目录 JDK的组成 JDK的跨平台原理 JDK的组成 JDK的跨平台原理
  • Ansys workbench分析应用基础(2)

    应力奇异及网格密度 上文 我们对直角L型支架进行了分析 发现应力最大值不收敛 且应力最大值出现在支架的直角处 因为加密网格并不会使得支架的应力最大值趋于收敛 所以我们将应力最大点处的直角改为圆角 网格密度 对我们模型进行改变再用上文的方法使
  • [576]TensorFlow练习2: 对评论进行分类

    1 使用大数据 了解怎么处理数据不能一次全部加载到内存的情况 如果你内存充足 当我没说 2 训练好的模型的保存和使用 3 使用的模型没变 还是简单的feedforward神经网络 update 添加CNN模型 4 如果你要运行本帖代码 推荐
  • C语言实现植物大战僵尸自动收集阳光(一) 问题分析与寻找基址

    C语言实现植物大战僵尸自动收集阳光 一 问题分析与寻找基址 C语言实现植物大战僵尸自动收集阳光 二 C语言控制台程序的实现 C语言实现植物大战僵尸自动收集阳光 三 解决收集不全与收集奖杯卡死的问题 前言 前半个月正是考试周 我们学校软件和计
  • 【C++笔记】《C++编程思想-卷二》笔记

    C 编程思想 笔记 Volume 2 第一章 异常处理 增强错误恢复能力是提高代码健壮性的最有力的途径之一 将try块嵌套在for while do或者 if快中 并且触发异常来试图解决问题 然后重新测试try块中的代码 1 5 清理 1
  • java quartz管理,SpringBoot中使用Quartz管理定时任务的方法

    定时任务在系统中用到的地方很多 例如每晚凌晨的数据备份 每小时获取第三方平台的 Token 信息等等 之前我们都是在项目中规定这个定时任务什么时候启动 到时间了便会自己启动 那么我们想要停止这个定时任务的时候 就需要去改动代码 还得启停服务
  • 内网离线地图

    1 第一种瓦片数据源 MapDownloader 链接 https pan baidu com s 1Hz HcA5QhtGmjLNezC pQ 提取码 6lek GISMysqlToLocalFile 链接 https pan baidu