国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
【教程】如何添加Mobile Atlas Creator的自定義地圖源

【教程】如何添加Mobile Atlas Creator的自定義地圖源

Zax ? 2013-03-25 8:06

重要聲明:
在下載和使用商業(yè)地圖前,請確保您的行為在地圖供應(yīng)商的許可范圍以內(nèi),或者已獲得相關(guān)的授權(quán),并遵守所在國家和地區(qū)的相關(guān)測繪與地圖發(fā)布的法律和規(guī)定,本文只介紹地圖源分析的技術(shù)的方法,對下載和使用商業(yè)地圖造成的知識產(chǎn)權(quán)破壞或其它違法與侵權(quán)問題,概不承擔(dān)任何責(zé)任。

Mobile Atlas Creator(下面簡稱MOBAC)從版本1.9開始,不再默認內(nèi)置各種商業(yè)地圖(如Google、Bing、Yahoo等)的地圖源,改為支持用戶自定義地圖源,您可以通過配置XML文件,BeanShell腳本,或者開發(fā)獨立的Jar包,來使得Mobile Atlas Creator支持更多您需要下載的地圖。

本文將以Google地圖為例,為您介紹XML和BeanShell的基本配置方法。

1、單圖層地圖源的XML配置方法

我們以Google地圖為例,首先打開Google地圖網(wǎng)站 http://ditu.google.cn,

標(biāo)準的Web摩卡托投影地圖都會將地圖拆分為等尺寸的正方形瓦塊(詳見:http://miocool.com/forums/viewtopic.php?f=16&t=250),接下來我們需要用瀏覽器自帶的工具分析出地圖網(wǎng)站的圖片瓦塊的網(wǎng)址規(guī)律,我們下面將主要以Chrome瀏覽器為例進行介紹,使用其它瀏覽器的用戶也可以用“網(wǎng)頁檢查器(Safari)”或者“Web開發(fā)者(Firefox)”等類似菜單功能來分析這些網(wǎng)址,原理相似,我們不做更多介紹。

點擊Chrome瀏覽器的菜單(地址欄右側(cè),圖標(biāo)是三個橫線的)按鈕,選擇:工具 -> 開發(fā)者工具,如下所示:


在開發(fā)者工具中,切換到Network(網(wǎng)絡(luò)請求)頁,此時工具會列出所有發(fā)生了的網(wǎng)絡(luò)請求,請隨便放縮一下地圖,您會看到產(chǎn)生了很多新請求,標(biāo)準的地圖圖片請求都是256x256大小的標(biāo)準圖片,選擇其中的任意一個地圖圖片請求,右側(cè)Preview就會列出該圖片的網(wǎng)址和預(yù)覽圖。(注意:如果請求太多不好找,建議用底部的“Images”過濾功能來只顯示圖片,或者先用清空按鈕清除現(xiàn)有請求,再縮放下地圖刷新出新的圖片)。
監(jiān)測到的Google地圖的圖片請求如下所示:

可以看到該圖片的網(wǎng)址為:
http://mt3.google.cn/vt/lyrs=m@21000000 ... 12&z=5&s=G

上面例子中圖片使用了mt3.google.cn服務(wù)器,大多數(shù)在線地圖都支持多臺服務(wù)器(負載均衡技術(shù))同時工作,也就是說同一圖片在多個服務(wù)器都有備份,不同用戶隨機連接到不同服務(wù)器,以保證連接速度。MOBAC也支持對多臺服務(wù)器進行同時連接下載,這需要我們找出所有可能的服務(wù)器的名稱,如上例中的mt3.google.cn, 我們猜測可能還存在mt0,mt1,mt2,mt4.....,可以通過試探法驗證出到底有哪些服務(wù)器:

首先點擊圖片網(wǎng)址在新窗口中打開圖片,然后嘗試將地址欄中mt3.googlg.cn的數(shù)字3依次替換為0,1,2,3,4,5.....,檢查圖片網(wǎng)址是否仍然可用(返回相同的圖片)。通過試驗?zāi)鷷l(fā)現(xiàn)Google地圖服務(wù)器一共4個,分別是mt0, mt1, mt2,mt3

接下來用“記事本”或者其它文本編輯工具新建一個文本文件,輸入下面的內(nèi)容:
代碼: [全選] [下載 Example1.xml]
<?xml version="1.0" encoding="UTF-8"?>
<customMapSource>
    <name>My Own Google Map</name>
    <minZoom>0</minZoom>
    <maxZoom>20</maxZoom>
    <tileType>PNG</tileType>
    <url><![CDATA[http://mt{$serverpart}.google.cn/vt/lyrs=m@209712068&hl=zh-CN&gl=CN&src=app&x={$x}&y={$y}&z={$z}&s=G]]></url>
    <serverParts>0 1 2 3</serverParts>
</customMapSource>
Map Source XML

上面配置中,
<name>是自定義的地圖源名字,注意不要和任何現(xiàn)有地圖源名字重復(fù)哦。
<url>就是剛才用瀏覽器分析出的url,只是需要把其中x,y,z的具體的值,替換為{$x}, {$y}, {$z}這樣的引用。同時把原url中mt3替換為了mt{$serverpart},并在接下來的<serverParts>....</serverParts>配置中寫入“0 1 2 3”。 在下載開始時,MOBAC會將{$x}, {$y}, {$z}替換為真實的x,y,z, 將{$serverpart}替換為0 1 2 3中隨機的一個。

將此文件保存為一個xml文件,如MyMap1.xml, 存到Mobile Atlas Creator安裝目錄下面mapsources子目錄,重啟MOBAC, 你就可以在MOBAC的地圖源列表中看到剛剛添加的“My Own Google Map”地圖源了。

注意: 如果XML配置文件中使用了漢字,必須在保存時選擇編碼為UTF-8,否則無法正常工作。

在一個<customMapSource>配置中,可以配置以下參數(shù)配置:
<name>: 必填參數(shù),地圖源名字,支持中文, 但保存時文件必須保存為UTF-8的編碼哦。
<minZoom>: 必填參數(shù),地圖的最小縮放等級,如0級
<maxZoom>: 必填參數(shù),地圖的最大縮放等級,如20級
<tileType>: 必填參數(shù),地圖的圖片格式,支持JPG、PNG、GIF, 3種配置
<url>: 必填參數(shù),最重要的參數(shù),表示訪問的url規(guī)則,即:如何由x,y,z 拼出圖片的在線網(wǎng)址,我們會在后面詳細介紹該參數(shù)的配置。
<invertYCoordinate>: 可選參數(shù),是否反轉(zhuǎn)y,有些地圖y編號是反向增長的,即最底下一行為0,越上北,編號越大,這時需要將此設(shè)為true,才能正常使用。
<serverParts>: 可選參數(shù),指定多臺服務(wù)器,作用于替換掉<url>中的{$serverport}部分
<backgroundColor>: 可選參數(shù),地圖的背景顏色,只對透明的地圖或請求失敗時才有意義,并按照#RGBA的格式,例如#FF00007F表示半透明的紅色。
<tileUpdate>: 可選參數(shù),絕對本地緩存的地圖圖片的刷新邏輯,支持:IfNoneMatch、ETag、IfModifiedSince、LastModified、None(默認)。前面4個需要服務(wù)器支持,None表示不考慮服務(wù)器標(biāo)記,只按照MOBAC全局設(shè)置中設(shè)置的過期時間為準。
<ignoreErrors>: 可選參數(shù),在下載出錯時是否忽略錯誤,繼續(xù)下載。如果設(shè)置為false(默認),會在顯示一個紅色叉在對應(yīng)位置,并且會記錄到總出錯計數(shù)中,注意:對于天地圖2.0, 因為地圖設(shè)計的特殊性,必須將ignoreErrors設(shè)為true,才能正常下載(詳細原因有機會再給大家詳細介紹)。

2、多圖層地圖源的XML配置方法

對于Google混合地圖等地圖源,通過分析Network的網(wǎng)絡(luò)請求,您會發(fā)現(xiàn)每個地方的圖片其實是由2張地圖疊加而成,底層是衛(wèi)星圖,上層是透明的道路地圖,如下所示:
道路地圖層(在上):

網(wǎng)址為:http://mt1.google.cn/vt/imgtp=png32&lyrs=h@210000000&hl=zh-CN&gl=CN&src=app&x=47&y=23&z=6&s=Gali

衛(wèi)星地圖層(在下)

網(wǎng)址為:http://mt3.google.cn/vt/lyrs=s@126&hl=zh-CN&gl=CN&src=app&x=47&y=23&z=6&s=Gali

合并后效果:


要支持這樣的多圖層地圖源,您可以是有MOBAC的多圖層地圖源(<customMultiLayerMapSource>)配置,它可以將任意多個不同類型的地圖源疊在并輸出。
上面例子中對應(yīng)的Google混合地圖的XML文件如下
代碼: [全選] [下載 Example2.xml]
<?xml version="1.0" encoding="UTF-8"?>
<customMultiLayerMapSource>
 <name>My Own Google Hybrid Map</name>
<layers>
  <customMapSource>
    <name>My Own Google Satellite</name>
    <minZoom>0</minZoom>
    <maxZoom>20</maxZoom>
    <tileType>PNG</tileType>
    <url><![CDATA[http://mt{$serverpart}.google.cn/vt/lyrs=s@126&hl=zh-CN&gl=CN&src=app&x={$x}&y={$y}&z={$z}&s=G]]></url>
    <serverParts>0 1 2 3</serverParts>
  </customMapSource>
  <customMapSource>
    <name>My Own Google Street</name>
    <minZoom>0</minZoom>
    <maxZoom>20</maxZoom>
    <tileType>PNG</tileType>
    <url><![CDATA[http://mt{$serverpart}.google.cn/vt/imgtp=png32&lyrs=h@210000000&hl=zh-CN&gl=CN&src=app&x={$x}&y={$y}&z={$z}&s=G]]></url>
    <serverParts>0 1 2 3</serverParts>
  </customMapSource>
</layers>
</customMultiLayerMapSource>
 
Map Source XML

注意配置的順序?qū)⒂绊懽罱K合并效果,配置越靠前,合并時放的位置越下面。
將上面的文件保存為xml,保存到mapsources子目錄,重啟MOBAC,即可看到新增的地圖源:My Own Google Hybrid Map

當(dāng)多圖層中的某一個圖層,已經(jīng)在其它配置文件中配置過,則您也可以直接通過地圖源名字引用這些圖層,例如,假設(shè)Map1和Map2是已經(jīng)存在的地圖源,而Map3是不存在的,則我們可以用下面的多圖層地圖源來合并Map1,Map2,Map3,其中Map1在最下面,Map3在最上面。
代碼: [全選] [下載 Example3.xml]
<?xml version="1.0" encoding="UTF-8"?>
<customMultiLayerMapSource>
 <name>My Own Google Hybrid Map</name>
<layers>
    <mapSource>
        <name>Map1</name>
    </mapSource>
    <mapSource>
        <name>Map2</name>
    </mapSource>
    <customMapSource>
    <name>Map3</name>
    <minZoom>0</minZoom>
    <maxZoom>20</maxZoom>
    <tileType>PNG</tileType>
    <url>...........</url>
  </customMapSource>
</layers>
</customMultiLayerMapSource>
 
Map Source XML


3、其它類型地圖源的XML配置方法
除了使用<customMapSource>配置標(biāo)準的Web摩卡托投影地圖,MOBAC還支持WMS,CloudMade,本地文件,本地Zip,本地Sqlite等多種格式的網(wǎng)絡(luò)服務(wù)或本地資源作為地圖源。例如,下面是TerraServer地圖的WMS配置
代碼: [全選] [下載 Example4.xml]
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customWmsMapSource>
  <name>TerraServer WMS</name>
  <minZoom>12</minZoom>
  <maxZoom>18</maxZoom>
  <tileType>JPG</tileType>
  <version>1.1.1</version>
  <layers>DRG</layers>
  <url>http://terraserver-usa.com/ogcmap6.ashx?</url>
  <coordinatesystem>EPSG:4326</coordinatesystem>
  <aditionalparameters><![CDATA[&EXCEPTIONS=BLANK&Styles=]]></aditionalparameters>
  <backgroundColor>#000000</backgroundColor>
</customWmsMapSource>
 
Map Source XML

不同類型地圖源對應(yīng)的頂級標(biāo)簽如下:
<customWmsMapSource>: WMS 地圖
<cloudMade>: cloudMade地圖
<localTileFiles>: 本地瓦片圖片,必須按照zoom/x/y.png 或者其它支持的目錄結(jié)構(gòu)與命名規(guī)范存儲
<localTileZip>: 存儲在Zip中的本地瓦片圖片,zip內(nèi)部目錄結(jié)構(gòu)的要求和<localTileFiles>一樣。
<localTileSQLite>: 本地Sqlite離線地圖文件,目前支持RMaps, MBTiles, BigPlanetTracks, NaviComputer 和 OSMAND。

關(guān)于這些地圖源的詳細配置參數(shù),這里不做進一步介紹,有需要的朋友可以參考MOBAC的官方Wiki:http://sourceforge.net/apps/mediawiki/mobac/index.php?title=Custom_XML_Map_Sources#Custom_WMS_map_sources

對于使用Mobile Atlas Creator MP (地圖加加改進版)的用戶,可以使用我們開發(fā)的疊加本地圖片到離線地圖的功能,即類似Google Earth KMZ Overlay,將一張本地圖片,按照指定的經(jīng)緯度范圍,平鋪到地圖的某個區(qū)域,并在所有縮放等級都可見。
下面是一個本地圖片疊加層的例子:
代碼: [全選]
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<
customMultiLayerMapSource>
  <name>本地文件+衛(wèi)星地圖</name>
  <tileType>PNG</tileType>
  <layers>
    <mapSource>
        <name>Google 衛(wèi)星地圖</name>
    </mapSource>
    <localImageFile>
        <name>Image1</name>
        <imageFile>C:\image\test.png</imageFile>
        <minZoom>0</minZoom>
        <maxZoom>20</maxZoom>
        <boxNorth>33.52</boxNorth>
        <boxSouth>32.42</boxSouth>
        <boxWest>106.51</boxWest>
        <boxEast>106.99</boxEast>
        <retinaDisplay>false</retinaDisplay>
        <backgroundColor>#00000000</backgroundColor>
    </localImageFile>
  </layers>
</customMultiLayerMapSource>
 
Map Source XML

它將本地的C:\image\test.png圖片,平鋪到緯度32.42 ~ 33.52, 經(jīng)度:106.51 ~ 106.99 這個范圍。并且與本地的“Google 衛(wèi)星地圖”這個圖層進行疊加。
關(guān)于本地圖片疊加層的更多使用技巧,請參考:http://miocool.com/forums/viewtopic.php?f=16&t=248

4、BeanShell地圖源配置方法

對于一些比較復(fù)雜的地圖,如Soso地圖,通過分析其圖片網(wǎng)址,會發(fā)現(xiàn)圖片地址的規(guī)則不是簡單的使用x,y,z,還引入了一些新的變量如dx,dy,或者對x,y,z進行復(fù)雜運算和判斷才能構(gòu)造出圖片網(wǎng)址。例如 x + 20, y/2, z-1, 等等,這個時候,簡單的XML配置文件無法應(yīng)付,MOBAC為大家提供了更高階的BeanShell腳本來支持。

BeanShell腳本允許您使用Java語法書寫從x,y,z到最終網(wǎng)址之間的各種運算和條件判斷,需要您具有一定的編程知識,您可以在其中使用Java的絕大多數(shù)語法和函數(shù),也可以像普通腳本那樣定義無類型的變量,是非常強大的地圖源配置手段。

考慮到版權(quán)問題,我們這里不在以真實地圖為例,而是以一個假想的地圖來介紹BeanShell的使用:

假設(shè)有一個在線地圖MyBSMap,其圖片網(wǎng)址形如:http://map.bsh.com/tile?p=12&q=MM2013&m=97&src=app
通過分析,我們了解了它的p,q,m參數(shù)的規(guī)則為:
代碼: [全選]
p = x - 64;
q = “MM” + y;
當(dāng)z>10時, m = z, 當(dāng)z < 10時,m = z + x;
Bean Shell


根據(jù)上述規(guī)則,我們用記事本新建一個文本文件如下:
代碼: [全選]
//每個Beanshell必須這個函數(shù),傳入x,y,z, 用戶自行拼接一個網(wǎng)址字符串并返回;
String getTileUrl( int zoom, int x, int y ) {
    p = x - 64;
    q = "MM" + y;
    int m;
    if(z > 10)
    {
        m = z;
    } else {
        m = x + z
    }
    return "http://map.bsh.com/tile?p="+ p +"&q="+ q +"&m="+ m +"&src=app";
}

tileType = "png"; // 必須,可以等于 "png" ,"jpg" 或 "gif"
name = "My BSH Map"; //必須,并且不能和其它地圖源重名
tileSize = 256; // 圖片大小,可選
minZoom = 1;    // 最小等級,可選
maxZoom = 18;   // 最大等級,可選
Bean Shell


注意:String getTileUrl( int zoom, int x, int y ) 函數(shù)是必須的函數(shù),tileType和name屬性也是必須的屬性,name指定的名字將是地圖源的顯示名,不能和其它地圖源重復(fù)哦!

編輯好后將文件存儲為bsh文件,如mybshmap.bsh, 保存到MOBAC目錄的mapsources子目錄,重啟MOBAC,即可以看到新增的 "My BSH Map"地圖源了。如果文件中含有漢字,請保存為UTF-8編碼,否則將顯示為亂碼或出錯!

先寫這么多了,其實,對于復(fù)雜的在線地圖,最困難的在于分析URL規(guī)則,這需要您有一定的Javascript基礎(chǔ)和足夠的耐心,也希望您能將自己的分析和所得及時分享,讓更多的人收益哦。
Zax
Miocool Inc.

Zax
★★★★★
 
帖子: 487
注冊: 2011-07-27 0:54

如何編輯下載FreeMap的XML文件

icefirechu ? 2013-06-05 2:34

這個問題曾發(fā)在http://miocool.com/forums/viewtopic.php?f=16&t=229&p=477#p477貼子后,發(fā)錯了地方,在這里重發(fā)一下。不好意思。
網(wǎng)址是http://www.maps-for-free.com/
比如我想下載海拔relief圖,我已經(jīng)將鏈接查到,并用替代格式改為:
http://www.maps-for-free.com/layer/relief/z2/row0/{$z}_{$x}-{$y}.jpg
其中Z2是地圖縮放級別為2,這個數(shù)字可從0變?yōu)?8;row0表示的是第幾排,2級地圖是1024*1024,共4排,也就是row后的數(shù)字可從0變到3。
我想問有沒有方法用某一格式代替可變數(shù)字,否則只能出來固定某個縮放級別,且只能顯現(xiàn)一排高為256的圖片。
我曾試過用<serverParts>替代,但失敗了。
請問哪位高手能解決這個問題?
萬分感謝。

icefirechu
★★
 
帖子: 8
注冊: 2013-06-05 2:08

Re: 如何編輯下載FreeMap的XML文件

Zax ? 2013-06-05 12:54

icefirechu 寫道:這個問題曾發(fā)在http://miocool.com/forums/viewtopic.php?f=16&t=229&p=477#p477貼子后,發(fā)錯了地方,在這里重發(fā)一下。不好意思。
網(wǎng)址是http://www.maps-for-free.com/
比如我想下載海拔relief圖,我已經(jīng)將鏈接查到,并用替代格式改為:
http://www.maps-for-free.com/layer/relief/z2/row0/{$z}_{$x}-{$y}.jpg
其中Z2是地圖縮放級別為2,這個數(shù)字可從0變?yōu)?8;row0表示的是第幾排,2級地圖是1024*1024,共4排,也就是row后的數(shù)字可從0變到3。
我想問有沒有方法用某一格式代替可變數(shù)字,否則只能出來固定某個縮放級別,且只能顯現(xiàn)一排高為256的圖片。
我曾試過用<serverParts>替代,但失敗了。
請問哪位高手能解決這個問題?
萬分感謝。


使用下面的串應(yīng)該可以:
http://www.maps-for-free.com/layer/relief/z{$z}/row{$y}/{$z}_{$x}-{$y}.jpg

如果需要更為復(fù)雜的計算,建議使用BeanShell腳本,詳情見上面的介紹,例如,同樣這個地圖,BeanShell的主函數(shù)寫為即可:
BeanShell還支持加減乘除,
String getTileUrl( int zoom, int x, int y )
{
return "http://www.maps-for-free.com/layer/relief/z" + zoom + "/row" + y + "/" + zoom + "_" + x + "-" + y + ".jpg";
}
Zax
Miocool Inc.

Zax
★★★★★
 
帖子: 487
注冊: 2011-07-27 0:54

感謝支持

icefirechu ? 2013-06-05 22:11

兄弟大才,修改的串能用,感謝了!

icefirechu
★★
 
帖子: 8
注冊: 2013-06-05 2:08

請幫忙看一下這個地圖文件如何編程

icefirechu ? 2013-06-19 1:34

地圖鏈接為http://mrdata.usgs.gov/mineral-resources/copper-smelters.html
用CacheView查看到的鏈接是http://mrdata.usgs.gov/services/country?LAYERS=country&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&FORMAT=image%2Fjpeg&SRS=EPSG%3A4326&BBOX=-90,-45,90,45&WIDTH=768&HEIGHT=384
請問這個鏈接能修改成一個MAC的文件嗎?
謝謝。


這個需要用到比較高階的BeanShell來配置,而無法通過XML配置。您的鏈接應(yīng)該是一些實時渲染引擎(如ArcGIS)渲染出的地圖,其中WIDTH和HEIGHT表示整個地圖是一張大圖,而不是256x256的小圖,您需要每個256x256的小圖都用上面的連接生成一次就可以了。關(guān)于BBOX,這是地圖區(qū)域的另外一種表達方式,每個256x256的小圖,是可以用x,y,z產(chǎn)生一個對應(yīng)的BBOX的。

USGS地圖源在下面的鏈接中應(yīng)該有現(xiàn)成的(地圖制作 > 國外地圖源 > USGS TOPO (full).bsh),提供0-19級的USGS TOPO地圖,依靠BeanShell配置。您可以參考一下,里面應(yīng)該也包括的BBOX的生成算法:http://pan.baidu.com/share/link?shareid=507619&uk=4144671628

icefirechu
★★
 
帖子: 8
注冊: 2013-06-05 2:08

Re: 【教程】如何添加Mobile Atlas Creator的自定義地圖源

icefirechu ? 2013-06-19 13:02

好的,謝謝版主,我學(xué)習(xí)一下再問

icefirechu
★★
 
帖子: 8
注冊: 2013-06-05 2:08

BeanShell語句的問題

icefirechu ? 2013-06-19 14:55

static import java.lang.Math.*;
//USGS_World copper smelterslv 1 ~ lv 15
String getTileUrl( int zoom, int x, int y )
{
//http://mrdata.usgs.gov/services/sedznpb?TRANSPARENT=true&LAYERS=sedznpb&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&FORMAT=image%2Fpng&SRS=EPSG%3A4326&BBOX=-180,-90,180,90&WIDTH=768&HEIGHT=384
return "http://mrdata.usgs.gov/services/sedznpb?TRANSPARENT=true&LAYERS=sedznpb&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&FORMAT=image%2Fpng&SRS=EPSG%3A4326&BBOX="
+ mercatorTileEdges(x,y,zoom) +
"&WIDTH=256&HEIGHT=256";
}



numTiles(z){
return abs(pow(2,z));
}

mercatorToLat(mercatorY){
return(toDegrees(atan(sinh(mercatorY))));
}

latEdges1(y,z){
n = numTiles(z);
unit = 1 / n;
relY1 = y * unit;
lat1 = mercatorToLat(PI * (1 - 2 * relY1));
return lat1;
}

latEdges2(y,z){
n = numTiles(z);
unit = 1 / n;
relY1 = y * unit;
relY2 = relY1 + unit;
lat2 = mercatorToLat(PI * (1 - 2 * relY2));
return lat2;
}

lonEdges1(x,z){
n = numTiles(z);
unit = 360 / n;
lon1 = -180 + x * unit;
return lon1;
}

lonEdges2(x,z){
n = numTiles(z);
unit = 360 / n;
lon1 = -180 + x * unit;
lon2 = lon1 + unit;
return lon2;
}

tileEdges(x,y,z){
return (latEdges2(y,z) + "," +
lonEdges1(x,z) + "," +
latEdges1(y,z) + "," +
lonEdges2(x,z));
}

lon2mercator(l){
return (l * 20037508.34 / 180);
}

lat2mercator(l){
r = toRadians(l);
lat = log((1+sin(r)) / (1-sin(r)));
return (lat * 20037508.34 / 2 / PI);
}

mercatorTileEdges(x,y,z){
return (lon2mercator(lonEdges1(x,z)) + "," +
lat2mercator(latEdges2(y,z)) + "," +
lon2mercator(lonEdges2(x,z)) + "," +
lat2mercator(latEdges1(y,z)));
}


tileType = "png"; // required - image format "png" "jpg" or "gif"
name = "mineral";
tileSize = 256; // optional
minZoom = 0; // optional
maxZoom = 15; // optional
tileUpdate = TileUpdate.None; // TileUpdate.IfNoneMatch, TileUpdate.ETag, TileUpdate.IfModifiedSince, TileUpdate.LastModified, TileUpdate.None
//backgroundColor = "#ffffff"; // optional - supported since MOBAC 1.9.1

上面這段語句,我就修改了標(biāo)紅部分,但在MAC上看不到,樓主能幫忙分析一下嗎?
謝謝。

icefirechu
★★
 
帖子: 8
注冊: 2013-06-05 2:08

Re: BeanShell語句的問題

Zax ? 2013-06-19 18:06

icefirechu 寫道:static import java.lang.Math.*;
//USGS_World copper smelterslv 1 ~ lv 15
String getTileUrl( int zoom, int x, int y )
{
//http://mrdata.usgs.gov/services/sedznpb?TRANSPARENT=true&LAYERS=sedznpb&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&FORMAT=image%2Fpng&SRS=EPSG%3A4326&BBOX=-180,-90,180,90&WIDTH=768&HEIGHT=384
return "http://mrdata.usgs.gov/services/sedznpb?TRANSPARENT=true&LAYERS=sedznpb&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&FORMAT=image%2Fpng&SRS=EPSG%3A4326&BBOX="
+ mercatorTileEdges(x,y,zoom) +
"&WIDTH=256&HEIGHT=256";
}

....................
上面這段語句,我就修改了標(biāo)紅部分,但在MAC上看不到,樓主能幫忙分析一下嗎?
謝謝。


你好,之前沒有仔細看您給的地圖網(wǎng)站,這其實是一個WMS規(guī)格的地圖,可以使用XML配置,無須BeanShell。

例如您給出的country圖層如下:
代碼: [全選]
   <customWmsMapSource>
      <name>USGS - Country</name>
      <minZoom>0</minZoom>
      <maxZoom>18</maxZoom>
      <tileType>JPG</tileType>
      <version>1.1.1</version>
      <layers>country</layers>
      <url>http://mrdata.usgs.gov/services/country?</url>
      <coordinatesystem>EPSG:4326</coordinatesystem>
      <aditionalparameters><![CDATA[&SERVICE=WMS&STYLE=]]></aditionalparameters>
      <backgroundColor>#000000</backgroundColor>
   </customWmsMapSource>

這個地圖還有一個文字標(biāo)記層(copper-smelters) ,配置類似,注意tileType變?yōu)榱薖NG。

順便介紹下WMS地圖源配置:
customWmsMapSource 規(guī)則為
url + “REQUEST=GetMap” + "&LAYERS=" + layers + "&SRS=" + coordinatesystem + "&VERSION=" + version + "&FORMAT=image/" + tileType.getMimeType() + "&BBOX=.......&WIDTH=256&HEIGHT=256" + aditionalparameters;
其中:getMimeType()會自動把JPG轉(zhuǎn)換為jpeg, PNG -> png, GIF -> gif, 上面規(guī)則中沒有的參數(shù),只要加到<aditionalparameters> 中即可。

最后,BeanShell也可以配置上面的各個圖層,只是BBOX的計算規(guī)則和之前的ArcGIS的規(guī)則不同,應(yīng)該是:
"左下角經(jīng)度,左下角緯度, 右上角經(jīng)度,右上角緯度”的軌跡, 即:
代碼: [全選]
"&BBOX=" +  lonEdges1(x,zoom) + "," + latEdges2(y,zoom) + "," + lonEdges2(x,zoom) + "," + latEdges1(y,zoom);


此外,你還可以用MOBAC函數(shù)來進行上面的計算,這樣就可以把BeanShell中一大堆計算函數(shù)都刪除了:
代碼: [全選]
"BBOX=" + Tools.xTileToLon(x * 256, zoom) + "," + Tools.yTileToLat((y+1)*256,zoom) + "," + Tools.xTileToLon((x+1)*256,zoom) + "," + Tools.yTileToLat(y*256,zoom)
Zax
Miocool Inc.

Zax
★★★★★
 
帖子: 487
注冊: 2011-07-27 0:54

謝謝解決問題

icefirechu ? 2013-06-19 23:17

謝謝樓主,我想要的就是那個PNG的礦藏標(biāo)注圖層,用您給的方案解決了問題,又學(xué)到了一招。
因為沒學(xué)過編程,只能一步一步地向樓主學(xué),實在不好意思。
再次表示感謝。

icefirechu
★★
 
帖子: 8
注冊: 2013-06-05 2:08

Re: 【教程】如何添加Mobile Atlas Creator的自定義地圖源

lhj1218 ? 2014-03-04 9:42

能提供個搜狗高清衛(wèi)星地圖的源?多謝。

lhj1218
★★
 
帖子: 2
注冊: 2013-09-05 8:07
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
OpenStreetMap/Google/百度/Bing瓦片地圖服務(wù)TMS
[轉(zhuǎn)載]奧維互動地圖瀏覽器V8.7 版本 設(shè)置DNS緩沖加載谷歌地圖
網(wǎng)站地圖的制作和提交
ArcGIS API for android 重寫TiledMapServiceLayer...
╰☆MT---絕對靚眼的PNG,太美了,不信就自己來看
使用MOBAC下載離線地圖包(支持谷歌衛(wèi)星地圖和等高線地圖)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服