1.說(shuō)明
水經(jīng)注離線谷歌衛(wèi)星地圖加載服務(wù)中間件可利用離線地圖的.dat文件在本地建立服務(wù)端,并生成影像、標(biāo)簽、高程等服務(wù)地址,可以在Flex中直接調(diào)用該服務(wù)地址,并將請(qǐng)求到的服務(wù)資源顯示在前端,當(dāng)請(qǐng)求的地圖資源不存在可通過(guò)網(wǎng)絡(luò)直接下載缺失的地圖,并儲(chǔ)存在.dat文件中。
百度網(wǎng)盤(pán)下載:http://pan.baidu.com/s/1eQoDr4u
詳情請(qǐng)咨詢水經(jīng)注QQ群 329081749
2.實(shí)現(xiàn)
2.1創(chuàng)建Flex示例
新建Flex項(xiàng)目“RiverMapServerSample For Flex”,并添加“agslib”,如下圖。
添加一個(gè)web墨卡托投影的瓦片服務(wù)圖層“RiverMapLayer”,部分源碼如下圖。
package com.esri.ags.flex.sample
{
import com.esri.ags.SpatialReference;
import com.esri.ags.geometry.Extent;
import com.esri.ags.geometry.MapPoint;
import com.esri.ags.layers.TiledMapServiceLayer;
import com.esri.ags.layers.supportClasses.LOD;
import com.esri.ags.layers.supportClasses.TileInfo;
import flash.net.URLRequest;
//擴(kuò)展水經(jīng)注地圖
public class RiverMapLayer extends TiledMapServiceLayer
{
private var _tileInfo:TileInfo = new TileInfo();
private var _baseURL:String="";
public function RiverMapLayer()
{
super();
buildTileInfo();
setLoaded(true);
}
public function set baseURL(baseurl:String):void
{
_baseURL = baseurl;
}
override public function get fullExtent():Extent
{
return new Extent(-18935696.6943223, -20037508.342787,18935696.6943223, 20037508.342787, new SpatialReference(102113));
}
override public function get initialExtent():Extent
{
return new Extent(-18935696.6943223, -20037508.342787, 18935696.6943223, 20037508.342787, new SpatialReference(102113));
}
override public function get spatialReference():SpatialReference
{
return new SpatialReference(102113);
}
override public function get tileInfo():TileInfo
{
return _tileInfo;
}
//獲取地圖
override protected function getTileURL(level:Number, row:Number, col:Number):URLRequest
{
var a:String= (col+1).toString(10);
var b:String=(row+1).toString(10);
var c:String= (level+1).toString(10);
var url:String=_baseURL +"x=" + a + "&" +"y=" + b + "&" + "z=" + c;
return new URLRequest(url);
}
private function buildTileInfo():void
{
_tileInfo.height=256;
_tileInfo.width=256;
_tileInfo.origin=new MapPoint(-18935696.6943223, 20037508.342787);
_tileInfo.spatialReference=new SpatialReference(102113);
_tileInfo.lods = [
new LOD(0, 156543.033928, 591657527.591555),
new LOD(1, 78271.5169639999, 295828763.795777),
new LOD(2, 39135.7584820001, 147914381.897889),
new LOD(3, 19567.8792409999, 73957190.948944),
new LOD(4, 9783.93962049996, 36978595.474472),
new LOD(5, 4891.96981024998, 18489297.737236),
new LOD(6, 2445.98490512499, 9244648.868618),
new LOD(7, 1222.99245256249, 4622324.434309),
new LOD(8, 611.49622628138, 2311162.217155),
new LOD(9, 305.748113140558, 1155581.108577),
new LOD(10, 152.874056570411, 577790.554289),
new LOD(11, 76.4370282850732, 288895.277144),
new LOD(12, 38.2185141425366, 144447.638572),
new LOD(13, 19.1092570712683, 72223.819286),
new LOD(14, 9.55462853563415, 36111.909643),
new LOD(15, 4.77731426794937, 18055.954822),
new LOD(16, 2.38865713397468, 9027.977411),
new LOD(17, 1.19432856685505, 4513.988705),
new LOD(18, 0.597164283559817, 2256.994353),
new LOD(19, 0.298582141647617, 1128.497176)
];
}
}
}
在主界面“RiverMapServerSampleForFlex.mxml”中添加esri的map標(biāo)簽,并引用剛剛新建的“RiverMapLayer”,如下圖所示。
其中【baseURL=”http://localhost:1002/getDefinedImage?”】表示請(qǐng)求的是影像、地圖、地形、標(biāo)簽、影像+標(biāo)簽、影像+地圖、影像+地形或Dem。具體根據(jù)RiverMapServer的啟動(dòng)配置參數(shù)來(lái)確定。
例如:RiverMapServer.exe “1002” “Image_Label” “c:\test\tile” “c:\test\label”表示此應(yīng)用輸出合并底圖(可以為影像、地圖、地形任意一種)和標(biāo)簽兩個(gè)地圖瓦片。RiverMapServer.exe “1002” “Image” “c:\test\tile”表示此應(yīng)用輸出地圖底圖(可以為影像、地圖、地形任意一種)
2.2啟動(dòng)RiverMapServer
啟動(dòng)RiverMapServer有兩種方式都可以正常運(yùn)行。
2.2.1 直接運(yùn)行RiverMapServer
通過(guò)config.ini文件配置參數(shù),如下圖。
PORT=1002表示端口為1002;GetFileType=Image_Label表示此應(yīng)用輸出合并底圖(可以為影像、地圖、地形任意一種)和標(biāo)簽兩個(gè)地圖瓦片,后面必須跟兩個(gè)瓦片工程文件目錄;TileDir=..\dat\tile表示影像數(shù)據(jù)路徑;LabelDir=..\dat\label 表示標(biāo)簽數(shù)據(jù)路徑;DemDir=..\dat\dem 表示高程數(shù)據(jù)路徑。
RiverMapServer啟動(dòng)窗口,如下圖。
2.2.2通過(guò)cmd.exe輸入啟動(dòng)參數(shù)運(yùn)行
新建一個(gè)bat文件,設(shè)置配置參數(shù),如下圖。
雙擊.bat啟動(dòng)服 務(wù)。運(yùn)行效果和直接運(yùn)行RiverMapServer效果一致。
3.運(yùn)行結(jié)果
運(yùn)行RiverMapServerSample For Flex效果,如下圖。
附錄:
啟動(dòng)參數(shù)說(shuō)明
1.瓦片文件類(lèi)型:Image_Lable 表示此應(yīng)用輸出合并底圖(可以為影像、地圖、地形任意一種)和標(biāo)簽兩個(gè)地圖瓦片,后面必須跟兩個(gè)瓦片工程文件目錄
例子:RiverMapServer.exe “1002” “Image_Label” “c:\test\tile” “c:\test\label”
2.瓦片文件類(lèi)型:Image 表示此應(yīng)用輸出地圖底圖(可以為影像、地圖、地形任意一種)
后面必須只需一個(gè)瓦片工程文件目錄
例子:RiverMapServer.exe “1002” “Image” “c:\test\tile”
3.瓦片文件類(lèi)型:Label表示此應(yīng)用輸出地圖標(biāo)簽 后面必須只需一個(gè)瓦片工程文件目錄
例子:RiverMapServer.exe “1002” “Label” “c:\test\label”
4.(待)瓦片文件類(lèi)型:dem表示此應(yīng)用輸出地圖位置高程 后面必須只需一個(gè)地圖位置高程工程文件目錄
例子:RiverMapServer.exe “1002” “dem” “c:\test\dem”
輸入?yún)?shù)大小寫(xiě)不敏感,啟動(dòng)時(shí)需檢查瓦片文件類(lèi)型與工程文件是否匹配
請(qǐng)求接口說(shuō)明
根據(jù)啟動(dòng)參數(shù)輸出相應(yīng)類(lèi)型圖片(影像、地圖、地形、標(biāo)簽、影像+標(biāo)簽、影像+地圖、影像+地形、Dem)
http://localhost:1002/getDefinedImage?x=1&y=1&z=1
輸出地圖底圖(影像、地圖、地形任意一種)
http://localhost:1002/getTileImage?x=1&y=1&z=1
輸出標(biāo)簽
http://localhost:1002/getLabelImage?x=1&y=1&z=1
輸出高程
http://localhost:1002/getDemImage?x=1&y=1&z=1
刪除地圖地圖(影像、地圖、地形任意一種)
http://localhost:1002/delTileImage?x=1&y=1&z=1
地圖服務(wù)啟動(dòng)日志輸出
[attach]323230[/attach]
2 .服務(wù)正常啟動(dòng)與運(yùn)行輸出:
@@RUN:WAITING 正常啟動(dòng)后和服務(wù)空閑時(shí)每分鐘輸出
@@RUN:Exception:異常消息(不能有回車(chē)換上等控制字符)服務(wù)啟動(dòng)異常后輸出
服務(wù)正常啟動(dòng)后建立與瓦片工程文件數(shù)據(jù)源的連接
@@DSCOK:瓦片工程文件 連接正常
@@DSCFAIL:瓦片工程文件 連接失敗
@@PORT:端口
3 .瓦片輸出
@@TileOK:X=1&y=1&z=1 底圖瓦片下載成功(已下載正常輸出瓦片不輸出日志)
@@LabelOK:X=1&y=1&z=1 標(biāo)簽瓦片下載成功(已下載正常輸出瓦片不輸出日志)
@@TileNoExists:X=1&y=1&z=1 底圖瓦片不存在
@@LabelNoExists:X=1&y=1&z=1 標(biāo)簽瓦片不存在
@@TileOverRange:X=1&y=1&z=1 底圖瓦片超出工程文件覆蓋范圍
@@LabelOverRange:X=1&y=1&z=1 標(biāo)簽瓦片超出工程文件覆蓋范圍
[
本帖最后由 諾一小寶貝 于 2015-12-23 10:55 編輯 ]