水经注离线谷歌卫星地图加载服务中间件调用示例 For Flex.docx
《水经注离线谷歌卫星地图加载服务中间件调用示例 For Flex.docx》由会员分享,可在线阅读,更多相关《水经注离线谷歌卫星地图加载服务中间件调用示例 For Flex.docx(10页珍藏版)》请在冰豆网上搜索。
水经注离线谷歌卫星地图加载服务中间件调用示例ForFlex
水经注离线谷歌卫星地图加载服务中间件调用示例ForFlex
1.说明
水经注离线谷歌卫星地图加载服务中间件可利用离线地图的.dat文件在本地建立服务端,并生成影像、标签、高程等服务地址,可以在Flex中直接调用该服务地址,并将请求到的服务资源显示在前端,当请求的地图资源不存在可通过网络直接下载缺失的地图,并储存在.dat文件中。
2.实现
2.1创建Flex示例
新建Flex项目“RiverMapServerSampleForFlex”,并添加“agslib”,如下图。
添加一个web墨卡托投影的瓦片服务图层“RiverMapLayer”,部分源码如下图。
packagecom.esri.ags.flex.sample
{
importcom.esri.ags.SpatialReference;
importcom.esri.ags.geometry.Extent;
importcom.esri.ags.geometry.MapPoint;
importcom.esri.ags.layers.TiledMapServiceLayer;
importcom.esri.ags.layers.supportClasses.LOD;
importcom.esri.ags.layers.supportClasses.TileInfo;
import.URLRequest;
//扩展水经注地图
publicclassRiverMapLayerextendsTiledMapServiceLayer
{
privatevar_tileInfo:
TileInfo=newTileInfo();
privatevar_baseURL:
String="";
publicfunctionRiverMapLayer()
{
super();
buildTileInfo();
setLoaded(true);
}
publicfunctionsetbaseURL(baseurl:
String):
void
{
_baseURL=baseurl;
}
overridepublicfunctiongetfullExtent():
Extent
{
returnnewExtent(-18935696.6943223,-20037508.342787,18935696.6943223,20037508.342787,newSpatialReference(102113));
}
overridepublicfunctiongetinitialExtent():
Extent
{
returnnewExtent(-18935696.6943223,-20037508.342787,18935696.6943223,20037508.342787,newSpatialReference(102113));
}
overridepublicfunctiongetspatialReference():
SpatialReference
{
returnnewSpatialReference(102113);
}
overridepublicfunctiongettileInfo():
TileInfo
{
return_tileInfo;
}
//获取地图
overrideprotectedfunctiongetTileURL(level:
Number,row:
Number,col:
Number):
URLRequest
{
vara:
String=(col+1).toString(10);
varb:
String=(row+1).toString(10);
varc:
String=(level+1).toString(10);
varurl:
String=_baseURL+"x="+a+"&"+"y="+b+"&"+"z="+c;
returnnewURLRequest(url);
}
privatefunctionbuildTileInfo():
void
{
_tileInfo.height=256;
_tileInfo.width=256;
_tileInfo.origin=newMapPoint(-18935696.6943223,20037508.342787);
_tileInfo.spatialReference=newSpatialReference(102113);
_tileInfo.lods=[
newLOD(0,156543.033928,591657527.591555),
newLOD(1,78271.5169639999,295828763.795777),
newLOD(2,39135.7584820001,147914381.897889),
newLOD(3,19567.8792409999,73957190.948944),
newLOD(4,9783.93962049996,36978595.474472),
newLOD(5,4891.96981024998,18489297.737236),
newLOD(6,2445.98490512499,9244648.868618),
newLOD(7,1222.99245256249,4622324.434309),
newLOD(8,611.49622628138,2311162.217155),
newLOD(9,305.748113140558,1155581.108577),
newLOD(10,152.874056570411,577790.554289),
newLOD(11,76.4370282850732,288895.277144),
newLOD(12,38.2185141425366,144447.638572),
newLOD(13,19.1092570712683,72223.819286),
newLOD(14,9.55462853563415,36111.909643),
newLOD(15,4.77731426794937,18055.954822),
newLOD(16,2.38865713397468,9027.977411),
newLOD(17,1.19432856685505,4513.988705),
newLOD(18,0.597164283559817,2256.994353),
newLOD(19,0.298582141647617,1128.497176)
];
}
}
}
在主界面“RiverMapServerSampleForFlex.mxml”中添加esri的map标签,并引用刚刚新建的“RiverMapLayer”,如下图所示。
其中【baseURL=”http:
//localhost:
1002/getDefinedImage?
”】表示请求的是影像、地图、地形、标签、影像+标签、影像+地图、影像+地形或Dem。
具体根据RiverMapServer的启动配置参数来确定。
例如:
RiverMapServer.exe“1002”“Image_Label”“c:
\test\tile”“c:
\test\label”表示此应用输出合并底图(可以为影像、地图、地形任意一种)和标签两个地图瓦片。
RiverMapServer.exe“1002”“Image”“c:
\test\tile”表示此应用输出地图底图(可以为影像、地图、地形任意一种)
2.2启动RiverMapServer
启动RiverMapServer有两种方式都可以正常运行。
2.1.2直接运行RiverMapServer
通过config.ini文件配置参数,如下图。
PORT=1002表示端口为1002;GetFileType=Image_Label表示此应用输出合并底图(可以为影像、地图、地形任意一种)和标签两个地图瓦片,后面必须跟两个瓦片工程文件目录;TileDir=..\dat\tile表示影像数据路径;LabelDir=..\dat\label表示标签数据路径;DemDir=..\dat\dem表示高程数据路径。
RiverMapServer启动窗口,如下图。
2.2.2通过cmd.exe输入启动参数运行
新建一个bat文件,设置配置参数,如下图。
双击.bat启动服务。
运行效果和直接运行RiverMapServer效果一致。
3.运行结果
运行RiverMapServerSampleForFlex效果,如下图。
附录:
启动参数说明
1.瓦片文件类型:
Image_Lable表示此应用输出合并底图(可以为影像、地图、地形任意一种)和标签两个地图瓦片,后面必须跟两个瓦片工程文件目录
例子:
RiverMapServer.exe“1002”“Image_Label”“c:
\test\tile”“c:
\test\label”
2.瓦片文件类型:
Image表示此应用输出地图底图(可以为影像、地图、地形任意一种)
后面必须只需一个瓦片工程文件目录
例子:
RiverMapServer.exe“1002”“Image”“c:
\test\tile”
3.瓦片文件类型:
Label表示此应用输出地图标签后面必须只需一个瓦片工程文件目录
例子:
RiverMapServer.exe“1002”“Label”“c:
\test\label”
4.(待)瓦片文件类型:
dem表示此应用输出地图位置高程后面必须只需一个地图位置高程工程文件目录
例子:
RiverMapServer.exe“1002”“dem”“c:
\test\dem”
输入参数大小写不敏感,启动时需检查瓦片文件类型与工程文件是否匹配
请求接口说明
根据启动参数输出相应类型图片(影像、地图、地形、标签、影像+标签、影像+地图、影像+地形、Dem)
http:
//localhost:
1002/getDefinedImage?
x=1&y=1&z=1
输出地图底图(影像、地图、地形任意一种)http:
//localhost:
1002/getTileImage?
x=1&y=1&z=1
输出标签
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
地图服务启动日志输出
1.服务启动时需要检测输入参数的数据是否正确:
@@INPUT:
OK输入参数正确
@@INPUT:
PortError端口错误
@@INPUT:
TypeError瓦片类型错误
@@INPUT:
DataFileError:
瓦片工程文件瓦片工程文件错误
2.服务正常启动与运行输出:
@@RUN:
WAITING正常启动后和服务空闲时每分钟输出
@@RUN:
Exception:
异常消息(不能有回车换上等控制字符)服务启动异常后输出
服务正常启动后建立与瓦片工程文件数据源的连接
@@DSCOK:
瓦片工程文件连接正常
@@DSCFAIL:
瓦片工程文件连接失败
@@PORT:
端口
3.瓦片输出
@@TileOK:
X=1&y=1&z=1底图瓦片下载成功(已下载正常输出瓦片不输出日志)
@@LabelOK:
X=1&y=1&z=1标签瓦片下载成功(已下载正常输出瓦片不输出日志)
@@TileNoExists:
X=1&y=1&z=1底图瓦片不存在
@@LabelNoExists:
X=1&y=1&z=1标签瓦片不存在
@@TileOverRange:
X=1&y=1&z=1底图瓦片超出工程文件覆盖范围
@@LabelOverRange:
X=1&y=1&z=1标签瓦片超出工程文件覆盖范围