因為 Google Maps 在日本地區資訊很少,所以我又抓了 Yahoo Japan Map
請將以下程式碼存成 .bsh
PS. Yahoo Japan Map 到 Level 10 時,只剩下日本國土範圍有圖資!
/** Yahoo Japan Map Example: Input parameters for this script: "zoom", "x" and "y" **/ String getTileUrl( int zoom, int x, int y ) { if (zoom == 0) { return "http://m.map.c.yimg.jp/m?r=1&x=" + x + "&y=" + y + "&z=" + (zoom + 1) + ".png"; } if (zoom == 1) { return "http://m.map.c.yimg.jp/m?r=1&x=" + x + "&y=" + (0 - y) + "&z=" + (zoom + 1) + ".png"; } if (zoom == 2) { return "http://m.map.c.yimg.jp/m?r=1&x=" + x + "&y=" + (1 - y) + "&z=" + (zoom + 1) + ".png"; } if (zoom == 3) { return "http://m.map.c.yimg.jp/m?r=1&x=" + x + "&y=" + (3 - y) + "&z=" + (zoom + 1) + ".png"; } if (zoom == 4) { return "http://m.map.c.yimg.jp/m?r=1&x=" + x + "&y=" + (7 - y) + "&z=" + (zoom + 1) + ".png"; } if (zoom == 5) { return "http://m.map.c.yimg.jp/m?r=1&x=" + x + "&y=" + (15 - y) + "&z=" + (zoom + 1) + ".png"; } if (zoom == 6) { return "http://m.map.c.yimg.jp/m?r=1&x=" + x + "&y=" + (31 - y) + "&z=" + (zoom + 1) + ".png"; } if (zoom == 7) { return "http://m.map.c.yimg.jp/m?r=1&x=" + x + "&y=" + (63 - y) + "&z=" + (zoom + 1) + ".png"; } if (zoom == 8) { return "http://m.map.c.yimg.jp/m?r=1&x=" + x + "&y=" + (127 - y) + "&z=" + (zoom + 1) + ".png"; } if (zoom == 9) { return "http://m.map.c.yimg.jp/m?r=1&x=" + x + "&y=" + (255 - y) + "&z=" + (zoom + 1) + ".png"; } if (zoom == 10) { return "http://m.map.c.yimg.jp/m?r=1&x=" + x + "&y=" + (511 - y) + "&z=" + (zoom + 1) + ".png"; } if (zoom == 11) { return "http://m.map.c.yimg.jp/m?r=1&x=" + x + "&y=" + (1023 - y) + "&z=" + (zoom + 1) + ".png"; } if (zoom == 12) { return "http://m.map.c.yimg.jp/m?r=1&x=" + x + "&y=" + (2047 - y) + "&z=" + (zoom + 1) + ".png"; } if (zoom == 13) { return "http://m.map.c.yimg.jp/m?r=1&x=" + x + "&y=" + (4095 - y) + "&z=" + (zoom + 1) + ".png"; } if (zoom == 14) { return "http://m.map.c.yimg.jp/m?r=1&x=" + x + "&y=" + (8191 - y) + "&z=" + (zoom + 1) + ".png"; } if (zoom == 15) { return "http://m.map.c.yimg.jp/m?r=1&x=" + x + "&y=" + (16383 - y) + "&z=" + (zoom + 1) + ".png"; } if (zoom == 16) { return "http://m.map.c.yimg.jp/m?r=1&x=" + x + "&y=" + (32767 - y) + "&z=" + (zoom + 1) + ".png"; } if (zoom == 17) { return "http://m.map.c.yimg.jp/m?r=1&x=" + x + "&y=" + (65535 - y) + "&z=" + (zoom + 1) + ".png"; } if (zoom == 18) { return "http://m.map.c.yimg.jp/m?r=1&x=" + x + "&y=" + (131071 - y) + "&z=" + (zoom + 1) + ".png"; } if (zoom == 19) { return "http://m.map.c.yimg.jp/m?r=1&x=" + x + "&y=" + (262143 - y) + "&z=" + (zoom + 1) + ".png"; } if (zoom == 20) { return "http://m.map.c.yimg.jp/m?r=1&x=" + x + "&y=" + (524287 - y) + "&z=" + (zoom + 1) + ".png"; } } void addHeaders( java.net.HttpURLConnection conn) { // Optional: set HTTP Referer or Cookies conn.addRequestProperty("Cookie","test=12345"); conn.addRequestProperty("Referer","http://www.openstreetmap.org"); }
tileType = "png"; // required - image format "png" "jpg" or "gif"
// Default size of each tile is 256x256 pixel tileSize = 256; // optional minZoom = 0; // optional maxZoom = 19; // optional name = "Yahoo Map";
tileUpdate = TileUpdate.None; // optional - possibilities: // TileUpdate.IfNoneMatch, TileUpdate.ETag, TileUpdate.IfModifiedSince, TileUpdate.LastModified, TileUpdate.None |
下圖是我從 Samsung Galaxy Note 2 上抓下來的,地圖上半部是 Yahoo Maps,下半部是 Google Maps
紅色線框是兩種地圖圖資交界處。
大家可以很明顯的看到 Yahoo Map 字體比 Google Map 清晰
配色效果也好些,街道寬度都差不多
所以在高階手機上看來,街道都很細…
16 意見:
耶,超讚的!
本來還打算用1.9的抓Google,1.8抓Yahoo,現在可以用同一套一起下載了。
感謝!
在日本Yahoo的圖資的確比Google好看,同樣的比例尺下,Yahoo的字比較大,而且一些小圖示也比Google大。
Google Maps在Android上,字體就會自動放大,看起來就不會很累(可以把用Mobile Atlas Creator下載的圖和手機上的Google Maps的圖比較)。
感謝提供。
剛剛試了一下,加入
&style=base:bold
這個參數,字體變得更大更清楚,適合手機上看。
感謝提供資訊呀....
另外,手機上顯示 Google Maps Apps 圖資,比用 MOBAC 抓的清楚,是因為多了一個 &scale=2 參數
以此參數抓圖資,會比原來大上4倍
因為新版 MOBAC 不支援 tileSize 參數,所以也無法用這個參數正常運作...:(
有看到您在TYT的網站留言,我覺得您可以不用執著於星跡地圖,因為他也說了,因為很忙,沒時間更新。
RMaps最近更新的蠻頻繁的,不但加入了下載器,也支援放大功能說,不過MOBAC製作的就只能當作圖片處理,跟星跡地圖一樣會模糊就是了,線上快取和下載的部份就好很多。
蠻可惜的,因為 RMaps 讀取超過 1GB 以上離線地圖檔,就會變得超慢...
蠻可惜的,因為 RMaps 讀取超過 1GB 的離線圖資,就會跑很慢... :(
Hi
版大你可以試看看Locus這個軟體,雖然他和rmap一樣需要預讀地圖,但所提供的功能在免費版就很完整,也提供 tileSize這個參數在online map上使用,不過卻會發生整個世界地圖只剩下北美洲的部分,且座標也全部大亂,所以猜測如果MOBAC可支援使用tileSize這個參數,但如果app不支援的情況下,也只能單純瀏覽,無法當作一般地圖使用,支援標記和搜尋地標等等功能。
Locus 看起來好專業的感覺,一堆設定...
稍微看了一下,好像內建沒有讀取 Google Maps
版大您好:
內建是沒有支援Google Map
請參考http://forum.locusmap.eu/viewtopic.php?f=43&t=1903
必需使用providers.xml去定義才可以使用。
板大您好
請問若我要找的位置是在
&x=3591 &y=422 &z=13
該如何輸入在您提供的範例中呢?
是否為
String getTileUrl( int zoom==13, int x==3591, int y ==422) {
是的
TOM 您好,謝謝回覆
好一陣子沒上來看了,這次去日本用了Yahoo Japan Maps。
現在有空再來研究一下Google的scale=2,想請教您,如果在Google Maps的xml裡加上這個參數後,您在Mobile Atlas Creator上看地圖會是正常的嗎?
我有弄了一個,發現直接在程式上看圖會一塊一塊的,不過隨便抓一個範圍後,拿到手機上看,發現是正常的說。
用了這個參數後,再搭配rmaps的放大功能,超清楚的。
謝謝!
另外,再請教一下,Yahoo Japan Maps有沒有支援scale=2呢?我本來看到裡面有tileSize = 256,想說直接改成512,沒想到就說不支援。
太久沒出國,終於可以去日本了,不過發現Yahoo Japan Maps的.bsh失效了,不曉得有沒有機會請您再出手一下。
謝謝!
張貼留言