package org.openscales.core.layer
{
import org.openscales.core.Map;
import org.openscales.core.tile.ImageTile;
import org.openscales.geometry.basetypes.Bounds;
import org.openscales.geometry.basetypes.Location;
import org.openscales.geometry.basetypes.Pixel;
import org.openscales.geometry.basetypes.Size;
public class ArcGISCache extends Grid
{
public function ArcGISCache(name:String,url:String, layerName:String=""){
super(name, url);
this._layerName = layerName;
//this._tileOrigin= new Location(-400,400);
}
private var _serviceVersion:String = "1.0.0";
private var _tileOrigin:Location = null;
private var _format:String = "png";
private var _layerName:String;
/**
* A list of all resolutions available on the server.
* Only set this property if the map resolutions differs from the server
*/
private var _serverResolutions:Array = null;
override public function getURL(bounds:Bounds):String {
var res:Number = this.map.resolution;
var originTileX:Number =(this._tileOrigin.lon +(res * this.tileWidth/2));
var originTileY:Number =(this._tileOrigin.lat +(res * this.tileHeight/2));
var center:Location =bounds.center ;
trace("center="+center);
var x:Number = (Math.round(Math.abs((center.lon - originTileX) / (res * this.tileWidth))));
var y:Number = (Math.round(Math.abs((originTileY - center.lat) / (res * this.tileHeight))));
var z:Number = this.map.zoom;
var url:String = this.url + "/tile/" + z + "/" + y + "/" + x + "."+this._format;
return url ;
}
override public function addTile(bounds:Bounds, position:Pixel):ImageTile {
return new ImageTile(this, position, bounds, this.getURL(bounds), new Size(this.tileWidth, this.tileHeight));
}
override public function set map(map:Map):void {
super.map = map;
if (! this._tileOrigin) {
this._tileOrigin = new Location(this.map.maxExtent.left, this.map.maxExtent.bottom);
}
}
/**
* setter for tile image format
*
* @param value:String the tile image extention
*/
public function set format(value:String):void {
if(value.length==0)
return;
else if(value.charAt(0)=='.')
this._format = value.substr(1,value.length-1);
else
this._format = value;
}
/**
* getter for tile image format
*
* @return String the tile image format
*/
public function get format():String {
return this._format;
}
/**
* setter and getter of the TMS grid origin
*/
public function set origin(value:Location):void {
this._tileOrigin = value;
}
public function get origin():Location {
return this._tileOrigin.clone();
}
/**
* setter and getter of the TMS layer name
*/
public function set layerName(value:String):void {
this._layerName = value;
}
public function get layerName():String {
return this._layerName;
}
}
}
package org.openscales.fx.layer
{
import org.openscales.core.layer.ArcGISCache;
import org.openscales.geometry.basetypes.Location;
public class FxArcGISCache extends FxGrid
{
public function FxArcGISCache()
{
super();
if(this._layer == null){
this ._layer= new ArcGISCache("","");
}
}
public function set format(value:String):void{
if(this.layer!=null) {
(this.layer as ArcGISCache).format= value;
}
}
public function set origin(value :String):void{
if(this.layer!= null){
(this.layer as ArcGISCache).origin= Location.getLocationFromString(value);
}
}
public function set layerName(value:String):void{
if(this.layer!= null){
(this.layer as ArcGISCache).layerName =value;
}
}
}
}
<?xml version="1.0"?> <componentPackage> <component id="Map" class="org.openscales.fx.FxMap" /> <component id="Extent" class="org.openscales.fx.FxExtent" /> <component id="MaxExtent" class="org.openscales.fx.FxMaxExtent" /> <component id="Style" class="org.openscales.fx.feature.FxStyle" /> <component id="FeatureLayer" class="org.openscales.fx.layer.FxFeatureLayer" /> <component id="ImageLayer" class="org.openscales.fx.layer.FxImageLayer" /> <component id="WMS" class="org.openscales.fx.layer.FxWMS" /> <component id="WMSC" class="org.openscales.fx.layer.FxWMSC" /> <component id="WFS" class="org.openscales.fx.layer.FxWFS" /> <component id="KML" class="org.openscales.fx.layer.FxKML" /> <component id="HTC" class="org.openscales.fx.layer.FxHTC" /> <component id="TMS" class="org.openscales.fx.layer.FxTMS" /> <component id="ARC" class="org.openscales.fx.layer.FxArcGISCache" /> <component id="Mapnik" class="org.openscales.fx.layer.osm.FxMapnik" /> <component id="CycleMap" class="org.openscales.fx.layer.osm.FxCycleMap" /> <component id="Maplint" class="org.openscales.fx.layer.osm.FxMaplint" /> <component id="Osmarender" class="org.openscales.fx.layer.osm.FxOsmarender" /> <component id="CorePanZoom" class="org.openscales.fx.control.FxCorePanZoom" /> <component id="CorePanZoomBar" class="org.openscales.fx.control.FxCorePanZoomBar" /> <component id="BorderPanHandler" class="org.openscales.fx.handler.mouse.FxBorderPanHandler" /> <component id="ClickHandler" class="org.openscales.fx.handler.mouse.FxClickHandler" /> <component id="DragHandler" class="org.openscales.fx.handler.mouse.FxDragHandler" /> <component id="WheelHandler" class="org.openscales.fx.handler.mouse.FxWheelHandler" /> <component id="WMSGetFeatureInfo" class="org.openscales.fx.handler.mouse.FxWMSGetFeatureInfo" /> <component id="DragFeatureHandler" class="org.openscales.fx.handler.feature.FxDragFeatureHandler" /> <component id="SelectFeaturesHandler" class="org.openscales.fx.handler.feature.FxSelectFeaturesHandler" /> <component id="LayerManager" class="org.openscales.fx.control.layer.LayerManager" /> <component id="MousePosition" class="org.openscales.fx.control.FxMousePosition" /> <component id="Pan" class="org.openscales.fx.control.Pan" /> <component id="PanZoom" class="org.openscales.fx.control.PanZoom" /> <component id="Zoom" class="org.openscales.fx.control.Zoom" /> <component id="ZoomBox" class="org.openscales.fx.control.ZoomBox" /> <component id="OverviewMap" class="org.openscales.fx.control.FxOverviewMap" /> <component id="Capabilities" class="org.openscales.fx.control.Capabilities" /> <component id="FeatureDrawing" class="org.openscales.fx.control.FeatureDrawing"/> <component id="FeatureInfo" class="org.openscales.fx.control.FeatureInfo" /> <component id="YahooSearch" class="org.openscales.fx.control.search.YahooSearch" /> <component id="TraceInfo" class="org.openscales.fx.control.TraceInfo" /> <component id="ScaleLine" class="org.openscales.fx.control.FxScaleLine" /> <component id="Spinner" class="org.openscales.fx.control.FxSpinner" /> <component id="SampleRouting" class="org.openscales.fx.routing.FxSampleRouting" /> <component id="SampleRoutingControl" class="org.openscales.fx.control.routing.SampleRoutingControl"/> <component id="ControlPanel" class="org.openscales.fx.ControlPanel"/> <component id="IGNGeoRMSecurity" class="org.openscales.fx.security.ign.FxIGNGeoRMSecurity"/> <component id="Control" class="org.openscales.fx.control.Control" /> <component id="IconButton" class="org.openscales.fx.control.IconButton" /> </componentPackage>
<?xml version="1.0" encoding="utf-8"?> <!--- Simple TMS example --> <s:Group xmlns="http://openscales.org" xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" width="100%" height="100%"> <Map id="fxMap" width="100%" height="100%" zoom="1" center="106,40"> <ARC name="Arc" url="--------------url ---------" projection="EPSG:4326" layerName="basic" tileHeight="256" tileWidth="256" origin="-400,400" resolutions="0.053992133368657984,0.020766205141791533,0.010632297032597264, 0.005316148516298632,0.002658074258149316,0.001329037129074658"> </ARC> <DragHandler/> <WheelHandler/> <Spinner x="{width / 2}" y="{height / 2}"/> <MousePosition x="10" y="{height-20}" displayProjection="EPSG:4326"/> <TraceInfo x="{width-200}" y="0" /> <PanZoom id="panZoom" x="10" y="10" /> </Map> </s:Group>