日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

离线地图使用方法

發布時間:2023/12/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 离线地图使用方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近接手了一個web項目,其中因為是內網,所以,必須用離線的地圖,以便于在離線地圖上標注位置。

經過了一天多的學習查閱資料,現終于成功,總結如下:

? ? ? ?首先開發web GIS 主要是采用一些前端框架,目前主流的gis前端框架是?openlayers 和?Leaflet? ?至于兩者優劣,讀者可自行百度,我在項目中使用的是 Leaflet 。

? ? ? ?打開地圖下載器(工具在底部的github項目里,可自行下載)

?找到?MapDownloader.exe.config 文件 進行修改。

? MapDownloader,可以在有網絡連接的時候作為在線的使用(勾選左下角的“離線”),這里只是作為一個地圖數據的下載器,下載完成以后即可關閉,后續也不在需要。同時注意選擇地圖的層級,要多勾選幾個,否則地圖會出現斷層(可以理解為有不顯示的地方)

?

具體的就是修改我紅框中的內容:該數據庫地址,用戶名密碼等扽,改成自己的就行。注意:在數據庫中新建一個mapcache的數據庫。

?

修改保存,雙擊?

?

然后做一些設置

首先選擇mysql數據庫,其次選擇你要下載地圖的地方,我這里選擇的是北京,根據自己的需求進行選擇,選擇的位置過大,下載的時間就會很長

?

就是這個菜單,選擇需要下載的地圖提供方,選擇完畢之后,雙擊彈出提示框

這是讓你選擇下載的級別,通俗來說就是地圖的精細程度,級別越大地圖就能顯示的越精準,需要注意的是,當級別超過15,地圖的數據量會特別大,這里給出級別為15的地圖的樣子,個人可以根據情況來判定

級別選到15大概就是這個樣子

?

?

等待下載完成之后,進入你的mysql 數據庫 發現新建了一張數據表

?

?

?接下來要做的就是把這張數據庫表的數據,導出成瓦片地圖(其實就是一張張有規律的256*256圖片)

?

打開 GISMysqlToLocal.exe(后面會給出下載地址)

?

該填寫的填寫完整,然后點擊導出就可以導出圖片了,導出完成后,進入你導出的文件夾內 ,可以看到導出的內容是這樣的

?

都是文件夾套文件夾的形式,然后會到導出的文件夾下,使用Ngix啟動服務,也就是把這里圖片都放到web服務器里面,你可以使用Nginx,也可以使用Apache,甚至于tomcat

這里我只介紹一下用tomcat配置靜態資源訪問

我們都知道tomcat可以配置靜態資源和動態資源,但是實際工作過程中,我們都是把靜態資源跟動態資源放到一個項目的源代碼里,進行打包部署,那么對于我們的離線地圖,靜態資源是十分大的,

把離線地圖跟我們的代碼放到一個項目里面顯然不現實,所以我們需要把靜態資源放到其他路徑

如:D:\GIS

我們把文件放到這個目錄,瀏覽器如何訪問呢,使用tomcat的話,在此處配置

修改tomcat中的severl.xml,在host標簽下增加下面一句話? ? ? ??

<Context docBase="D:\GIS" path="/map" reloadable="true"></Context>

docBase是實際訪問地址

path是虛擬訪問地址。

舉個例子:'http://localhost:8844/map/788865972/{z}/{x}/{y}.png';其中,'http://localhost:8844是配置好的端口號,map就是上面的path,那么會映射成D:\GIS? 所以上面訪問的實際路徑是http://localhost:8844/D:\GIS/788865972/{z}/{x}/{y}.png

?
??

重啟tomcat之后,這樣當你訪問? http://localhost:8080/map/1/1/0.png,就可以訪問地圖資源了。

接下來編寫html頁面

?第一步引入js css

標箭頭的是必須要引入的

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);

也可以這樣寫:

參數解釋:另外,還有一種方法是在用geowebcache,基本思路也是用地圖下載器進行下載,在tomcat中配置geowebcache配置訪問。一開始用的就是這種辦法,但是沒有成功,用此方法已經成功,便不再繼續研究geowebcache方法,感興趣的讀者可以自行嘗試。 附:在CS系統中可以基于GMap.Net來做,參考《百度谷歌離線地圖解決方案》

源碼連接:https://github.com/chenwuwen/OffineMap

總結

以上是生活随笔為你收集整理的离线地图使用方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。