這一陣子,許多網友來詢問有關新版 Mobile Atlas Creator 1.98 的自定義地圖,所以決定多花一點時間,詳細說明整個過程,讓大家能夠更方便的下載自己喜好的地圖圖資。(豁出去了,這一陣子有點小討厭 Google)
以下均以 Google Maps 為例!使用到的工具如下
Google Chrome Browser
Nirsoft Chrome Cache View
1.首先去下載 Nirsoft 的 Cache View程式,它有分 for IE 以及 Firefox或是 Opera 的,這裡請以您自己使用的瀏覽器來選擇。
http://www.nirsoft.net/utils/chrome_cache_view.html (下載點)
2.執行瀏覽器 Google Chrome,或是您自己偏好的瀏覽器,並開啟 Google Maps 網址。
3.接下來,清除 Google Chrome 的 Cache 以及暫存資料,這個動作是為了讓你在下一步驟,比較容易找到 Google Maps 的圖資資訊。
4.接著執行 Nirsoft 的 Cache View 程式
5.回到 Google Chrome Browser,重新整理 Google Maps 網頁
6.再回到 Nirsoft Chrome Cache View ,按下重新整理
7.選取其中一個 png 圖檔的一列,並按下滑鼠右鍵,就會看到如圖的選單,請選擇 “Properties”
8.在 Properties 視窗中,URL一欄,就是 Google Maps 圖資的網址
9.您可以試著URL一欄中的網址全選、複製,然後貼到 Browser 去檢查
10.接下來我們解說一下,網址當中會用到的參數
http://mt0.google.com/vt/lyrs=m@184116379&hl=zh-TW&src=app&x=104&y=55&z=7&s=Galileo |
其中重要的是 x 、y 、z 這三個值,x, y 就是座標,z 就是圖資的層級
11.再來,就是選擇使用哪一種自定義地圖的檔案。
在 Mobile Atlas Creator 的官網中,講了很多種方法
A.使用 XML 檔案來定義圖資
- 讀取網路圖資
- 讀取 Local Drive 檔案圖資(將每一層、每一個座標的圖資存成檔案)
- 讀取 ZIP 壓縮圖資檔(如果圖資檔案容量超過 4GB,需要使用 Java 7)
- 讀取 SQLite 圖資檔
B.使用Bean Shell Script 來定義圖資
C.使用Java Program 來開發 Map Pack
這次,我專講 A的第一點(其實我對 Java & Bean Shell 也不熟啦),其他三點都有連結可看,請自行揣摩
XML 自定義圖資檔內容如下
<?xml version="1.0" encoding="UTF-8"?> <customMapSource> <name>Custom OSM Mapnik</name> <minZoom>0</minZoom> <maxZoom>18</maxZoom> <tileType>png</tileType> <tileUpdate>None</tileUpdate> <url>http://tile.openstreetmap.org/{$z}/{$x}/{$y}.png</url> <backgroundColor>#000000</backgroundColor> </customMapSource> |
<name>:定義地圖名稱,就是您在Mobile Atlas Creator 圖資下拉選單中看到的名稱
<minZoom>:地圖最小層級編號,就是 0
<maxZoom>:地圖最大層級編號,一般設到 20 就差不多了
<tileType>:圖檔格式,剛才在 Chrome Cache View 裡看到,圖檔副檔名是 png
<tileUpdate>:則是問何時要更新地圖檔,你可以輸入 None 或是 IfNoneMatch
<url>:就是放剛才在 Chrome Cache View 裡看到的圖資網址,其中 x 數值以 {$x} 取代, y 數值以 {$y} 取代,z值以 {$z} 取代
另外,& 符號要以 & 取代
所以
http://mt0.google.com/vt/lyrs=m@184116379&hl=zh-TW&src=app&x=104&y=55&z=7&s=Galileo |
就會變成
http://mt0.google.com/vt/lyrs=m@184116379&hl=zh-TW&src=app&x={$x}&y={$y}&z={$z}&s=Galileo |
<backgroundColor>:就是設定圖資的背景顏色,用預設就行
所以,Google Maps 自定義圖資檔,就是
<?xml version="1.0" encoding="UTF-8"?> |
把框框裡的內容,存成 .xml 檔案,放在 mapsources 目錄下,再重新執行 Mobile Atlas Creator 即可。
Google 還有其他圖資,例如:
大氣圖
<?xml version="1.0" encoding="UTF-8"?> |
地形圖
<?xml version="1.0" encoding="UTF-8"?> |
衛星圖
<?xml version="1.0" encoding="UTF-8"?> |
大眾運輸圖
<?xml version="1.0" encoding="UTF-8"?> |
路況圖(透明)
<?xml version="1.0" encoding="UTF-8"?> |
地名圖(透明)
<?xml version="1.0" encoding="UTF-8"?> |
天氣圖(透明)
<?xml version="1.0" encoding="UTF-8"?> |
以上各種圖資,都是在瀏覽器裡選擇圖層,再去 Chrome Cache View 查網址,所以就不重複敘述。
至於網友問到 Google Hybird Maps,是將衛星圖疊上透明的路名圖
所以接下來就是瞭解圖資要怎麼疊,其實說穿了很簡單…
在 Mobile Atlas Creator 官網就有提供多圖層的 XML 定義檔
你唯一要注意的就是圖資先後的順序(疊圖的順序),以及某些圖資不是透明圖疊上去就會蓋掉下面的圖。
例如:衛星圖+地名圖
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> |
以上,報告完畢,夠簡單吧,比 BeanShell 更簡單!
36 意見:
感謝你提供的寶貴的資訊!
超棒的,比之前的方便許多!
不好意思,請問能不能請教Yahoo Japan Maps的寫法?我有參考Google Maps的寫法,不過失敗了。
例如,png的網址是http://m.map.c.yimg.jp/m?r=1&x=442&y=49&z=10,我直接改成http://m.map.c.yimg.jp/m?r=1&x={$x}&y={$y}&z={$z},不過卻說沒有地圖說。
謝謝!
如果您是用在 XML 檔中,必須將 & 符號,替換成 &
另外,我不建議抓 Yahoo Japan Map ,因為在衛星導行地圖上不好處理。
Yahoo Japan Map 從 Zoom Level 1 開始,到 Zoom Level 10 ,都是全世界的圖資,到 Level 11 之後,圖資只剩日本國區域
等於要重新計算座標位置,很麻煩,而且 Y 軸是以赤道為基準 0,上正下負,跟百度地圖很像
Level 11
x = 859~936
y = 146~70
才會有圖資
https://lh3.googleusercontent.com/-VpWw08JqTLg/UHWAJuVr-PI/AAAAAAAAFBA/X6mMiduriUM/s1280/%E5%B7%A6%E4%B8%8B%E8%A7%92.jpg
https://lh5.googleusercontent.com/-rnESIH72C5Y/UHWAt73kCgI/AAAAAAAAFA0/MrrvcnNlhHk/s1280/%25E5%258F%25B3%25E4%25B8%258A%25E8%25A7%2592.jpg
原來是這樣,因為我發現Google Maps的字和圖示比Yahoo Japan的小,所以想改用看看,那還是只好用Google的囉。
非常感謝您的回答,之前只能用舊版的抓日本地圖,現在可以用新版的多邊形了。
本來我也是想說百度的大陸地圖很詳細,想抓大陸地圖,結果它跟日本地圖一樣超難搞...
我昨天要抓GMAP地形圖資,在CACHE VIEWER抓到的URL如下https://mts1.google.com/vt/lyrs=t@129,r@189000000&hl=zh-TW&gl=TW&src=app&x=211&y=109&z=8&s=Galile
所以我將它改寫如下
https://mts1.google.com/vt/lyrs=t@129,r@189000000&hl=zh-TW&gl=TW&src=app&x={$x}&y={$y}&z={$z}&s=Galile
並根據版大的範例,寫成XML內容如後
Custom GMAP Counter Line
0
18
png
IfNoneMatch
https://mts1.google.com/vt/lyrs=t@129,r@189000000&hl=zh-TW&gl=TW&src=app&x={$x}&y={$y}&z={$z}&s=Galile
#000000
可是當開啟MOBAC V1.9.9時就會pop錯誤訊息Failed to load a custom map
unexpected element(uri"http://schemes.microsoft.com/office/word/2003/wordml",local:'wordDocument").Expected elements are {}cloudMade>,{}customMapSource>,{}customMultiLayerMapSource>,...etc.
file:"Custom GMAP Counter Line.xml"
line/column:3/683
請教版大,我是否哪個環節做錯了呢?!又應該要如何修正?祈請版大指教,謝謝!
原來是不能用WORD來編輯XML,改用NOTEPAD就好囉!
不好意思,上班時間回覆比較慢。
很高興您自己已經 Try 出問題原因了!
Word 不管在編輯 XML 或是 HTML,通常會加些有的沒的,建議用 Notepad 最單純
您好,請問能否抓取google earth的地圖,還有就是google earth提供不同時間的地圖,能否根據需要抓取呢?謝謝
Google Earth 不行,資訊都是由 PlugIn 傳送接收。
至少使用 Cache View 是看不見的。
也許改用 Sniffer 的方式可以,但是很麻煩...所以... :P
不好意思又來打擾了。
請問您上次測試Yahoo Japan Map的時候,放大到11級後,出現的是完整的日本地圖嗎?我上次不死心又繼續嘗試,後來是有看到日本地圖,不過卻是一塊一塊很凌亂的,根本湊不出完整的(就是可能一塊是東京,他的旁邊卻是大阪之類的)。
雖然用了新版的Mobile Atlas Creator在選取上很方便,可是丟到手機上時,用RMaps看起來字卻小了點(Big Planet Tracks的放大效果在我的手機上看起來很醜)。
想說如果您上次測試可以正常看到整個日本,不曉得能不能把XML給我使用,謝謝!
可惜1.8版的Mobile Atlas Creator沒檔案可以複製到1.9來用,不然1.8還可以抓Yahoo Japan Map說。
我當時就殺掉檔案了...:(
他的 Y 軸座標是由下往上遞增,跟 Google 是相反的,所以我當時是用 Bean Shell Script 寫計算式去算對應的 Y 軸值
原來如此,還是謝謝您了!
您好,很感謝你提供的Google Maps下載辦法,但下載之後,使用Nexus 7瀏覽地圖字體實在很小,請問有甚麼辦法改善嗎?
請問Mobile Atlas Creator有辦法抓取到內建Google Maps的圖資嗎?
因為內建Google Maps可以調整字體的大小,瀏覽的舒適度提高很多。
謝謝
你好,
我想了解Bean Shell Script 製作方式,可否提供教學或路徑供我參考呢?
achung315@gmai.com
謝謝!
補充一下, Yahoo Maps 看起來似乎比 Google Maps 大,實際上存到手機後,圖示是一樣大小...
不過,Yahoo Maps 在日本地區確實資訊比 Google Maps 多而清楚!
以下網址是 Yahoo Maps 的資料
http://tomliu888.blogspot.tw/2012/11/yahoo-japan-maps-for-mobile-atlas.html
啊,在這篇才發現您覺得Yahoo Maps的圖示沒有比Google Maps的大。
我貼一下我測試的圖給您參考,不過Blogger好像不支援留言貼圖,就麻煩您自行去看了。
Google
http://data1.root-space.eu/uk/ukrtysla.jpg
Yahoo
http://data1.root-space.eu/89/89rh6bf9.jpg
在同樣比例尺的情形下(從畫面上的街道可以看出都一樣大),Yahoo的不但字體大,圖示也比較大說。
Google的好處是,有些道路、地名、建築物會有羅馬拼音就是了,方便大家唸出來。
你好, 太棒了..我一直用MOBAC 1.8. 可是現在好慢喔. 可以提供bean shell script給我嗎? 謝謝. chester.wang@gmail.com
希望大大提供bean shell script給我~ 謝謝hkfjg2j@gmail.com
你好,我不太会弄,可以提供bean shell script給我嗎? 谢谢!
kama@yahoo.com.tw
你好,我不太会弄,可以提供bean shell script給我嗎? 谢谢!
kamahao@yahoo.com.tw
这个mail才对!
感恩喔~
Chrome浏览器的话无需CacheViewer工具哦,直接在Chrome的【菜单】>【工具】>【开发者工具】,切换到resource和network卡、就可以查看Cache和当前发生的所有网络请求。
如果是Y轴反向的地图,也无需beanshell的,只需要XML加上
< invertYCoordinate >true< invertYCoordinate >
的配置。这里贴一个MOBAC地图源配置的详细介绍(官方的,英文的):http://sourceforge.net/apps/mediawiki/mobac/index.php?title=Custom_XML_Map_Sources#invertYCoordinate
最后推荐大家一个MOABC的二次开发版本(基于1.9.11),支持繁体中文哦(简体、繁体、英文),并修复了查看iOS Retina高清Google地图时显示问题(访问retina高清地图需要Google的URL中加上scale=2即可,图片是之前的4倍大小)
invertYCoordinate這個參數,雖然說是自 1.9.2 版就開始支援,
但實際上是 1.9.8 版是不能使用的,要到 1.9.9 版以後才能使用
我在 http://www.qkshare.com/thread847139.html 這裡放了我做好的簡易方式.
RMaps 0.9.4.apk + Mobile Atlas Creator 1.9.14
參考 Mobile Atlas Creator 1.9.14\mapsources\*.xml 的寫法. 會比較簡單.
請問
garmin線上地圖:http://garmaps.appspot.com/
及
中華電信線上地圖:
http://showtaiwan.hinet.net/
的xml分別為何?試了很久還是沒有成功,拜託大大的幫忙,感恩!
我的信箱:
miinmail@pchome.com.tw
Garmin 的地圖有點複雜
在縮圖時,使用一個什麼 Virtual Earth 的圖資,都還很規律;可是放大到一個程度時,會去讀另一個地圖的圖資,那個規律很難用一個數學式來表示,基本上就是一個 2 x 2 的陣列(g,r,m,n),再放大一倍,就是 4 x 4,再放大一倍就是 8 x 8,一堆 grmn的排列組合。
當然它有一定的規律,但是我不知道該怎麼用數學運算式來表示,如果不能用數學運算式表示,就很難用 MOBAC 去抓資料
如果您有興趣,建議您用 Google Chrome 瀏覽器,安裝一個擴充工具 Live HTTP Headers
它可以即時顯示瀏覽器存取的圖檔資料
感謝Tom大大的回應,看來Garmin地圖想下載,必須花很大的功夫!又中華電信圖資:http://showtaiwan.hinet.net/
成功機會是否比較大呢?它的xml檔好寫嗎?再次麻煩大大了!謝謝您!
作者你好:
我實在是一個電腦白癡
又好想要win上的台灣離線地圖
不知道作者有沒有做好的檔案呢
感激不盡!!
作者您好
請問
能否用自行所拍攝的正射圖來做離線地圖的裁切??
目前您的做法似乎可以
只差在如何取的我手邊正射圖資料所產生的URL
敬請指教
http://showtaiwan.hinet.net/ 中華電信地圖,基本上只是把 xy座標轉換成2進制,連接起來的字串,zoom 變成 l 變數
有興趣研究地圖的朋友,建議您使用 Chrome ,開啟地圖後,按下 Ctrl-Shift-J ,叫出 JavaScript 控制台,點選 Elements,再點選放大鏡,然後游標去點擊地圖任一位置,Elements 視窗會跳到相對應的 HTML Code,然後你游標在 HTML Code中游移,可以看到地圖方塊會亮起對應的位置,然後你就可以研究它的座標關係。
非常有用的文章,謝謝。
張貼留言