由于项目需求,在发布的地图服务的基础上,在其上面叠加一层路网数据,类似arcgis的服务叠加。简单介绍一下geoserver wtms服务叠加。
geoserver 发布两个地图切片服务分别为test1:test1_linegroup和test1:test1_pointgroup。
test1:是工作空间
test1_linegroup:图层组
test1_pointgroup:图层组
format:一定要是image/png格式的。
1. wmtsService.as
package com.components
{
import com.esri.ags.SpatialReference;
import com.esri.ags.Units;
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;
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.http.HTTPService;
/**
* WmtsService
*/
public class WmtsService extends TiledMapServiceLayer
{
public var layer:String ="";//图层服务名称(test1:test1_linegroup,test1:test1_pointgroup)
public var _baseURL:String = "http://192.168.1.1:8087/geoserver/gwc/service/wmts";
public var xmin:Number = 128.79232675837919;
public var ymin:Number = 47.34172740765266;
public var xmax:Number = 128.95826184300616;
public var ymax:Number = 47.46246064418352;
public var _tileInfo:TileInfo = new TileInfo();
public function WmtsService()
{
super();
buildTileInfo();
etLoaded(true); // Map will only use loaded layers
}
private var _fullExtent:Extent = new Extent(128.79232675837919,47.34172740765266,128.95826184300616,47.46246064418352 ,new SpatialReference(4326));
/**
* @private
*/
override public function get fullExtent():Extent
{
return _fullExtent;
}
private var _initialExtent:Extent = new Extent(128.79232675837919,47.34172740765266,128.95826184300616,47.46246064418352 ,new SpatialReference(4326));
/**
* @private
*/
override public function get initialExtent():Extent
{
return _initialExtent;
}
private var _spatialReference:SpatialReference = new SpatialReference(4326);
override public function get spatialReference():SpatialReference
{
return _spatialReference;
}
/**
* @private
*/
override public function get tileInfo():TileInfo
{
return _tileInfo;
}
override public function get units():String
{
return Units.DECIMAL_DEGREES;
}
override protected function getTileURL(level:Number, row:Number, col:Number):URLRequest
{
var url:String = _baseURL
+ "?SERVICE=WMTS&VERSION=1.0.0&REQUEST=GetTile" + "&LAYER="+layer+"" + "&STYLE=null" + "&FORMAT=image/png" + "&TILEMATRIXSET=test1gridset"
+ "&TILEMATRIX=test55gridset:" + level
+ "&TILEROW=" + row
+ "&TILECOL=" + col ;
return new URLRequest(url);
}
public function buildTileInfo():void
{
_tileInfo.dpi = 96;
_tileInfo.spatialReference = new SpatialReference(4326);
_tileInfo.height = 256;
_tileInfo.width = 256;
_tileInfo.format = "image/png";//一定是png格式的
_tileInfo.origin = new MapPoint(118.79232675837919,37.46246064418352);
_tileInfo.lods= [
new LOD(0,0.0006481839243241,257698.22998623073),
new LOD(1,0.000324091962162,128849.11499309549),
new LOD(2,0.000162045981081,64424.55749654774),
new LOD(3,0.0000810229905405,32212.27874827387),
new LOD(4,0.0000405114952703,16106.139374156812),
new LOD(5,0.0000202557476352,8053.069687098286),
new LOD(6,0.0000101278738176,4026.534843549143),
new LOD(7,0.0000050639369088,2013.2674217745714),
new LOD(8,0.0000025319684544,1006.6337108872857),
new LOD(9,0.0000012659842272,503.31685544364285)
];
}
}
}
2.MapTT.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:esri="http://www.esri.com/2008/ags"
minWidth="955" minHeight="600">
<fx:Script>
<![CDATA[
import com.components.WmtsService;
import com.esri.ags.Graphic;
import com.esri.ags.layers.GraphicsLayer;
import com.esri.ags.layers.Layer;
import com.esri.ags.layers.supportClasses.LOD;
import mx.controls.Alert;
import mx.events.FlexEvent;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.http.HTTPService;
public var _baseURL:String ="";// "http://192.168.1.1:8087/geoserver/gwc/service/wmts";
protected function myMap_initializeHandler(event:FlexEvent):void
{
var wmts1:WmtsService=new WmtsService();
var wmts2:WmtsService=new WmtsService();
wmts1.layer = "test1:test1_linegroup";
wmts2.layer = "test1:test1_pointgroup";
this.myMap.addLayer(wmts1);
this.myMap.addLayer(wmts2);
}
]]>
</fx:Script>
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<mx:VBox width="100%" height="100%">
<esri:Map id="myMap" zoomSliderVisible="true" logoVisible="false" scaleBarVisible="false"
initialize="myMap_initializeHandler(event)" >
</esri:Map>
</mx:VBox>
</s:Application>