重写TiledServiceLayer实现Arcgis访问Mapabc地图服务
2013-05-21 13:53
447 查看
之前有一次用到过高德的地图,当时折腾了好几天才加到Arcgis中,这次把其中的代码分享出来,希望对正在研究这个的朋友们有些帮助
package com.baixin.main; /** * * @ClassName: MapAbcToArcGISTLayer * @Description: ArcGIS访问MapAbc地图服务 * @author: Zrd * @version: v1.0 * @Date: 2012-8-11 上午10:18:17 */ import java.util.HashMap; import com.esri.android.map.TiledServiceLayer; import com.esri.core.geometry.Envelope; import com.esri.core.geometry.Point; import com.esri.core.geometry.SpatialReference; import com.esri.core.internal.b.a.a; public class MapAbcToArcGISTLayer extends TiledServiceLayer { private int WKID = 2436; private String layername = null; private String layerurl = null; private static final double[] c = { 896.0859375, 548.04296875, 224.02148437, 112.0107421875, 56.00537109375, 28.002685546875, 14.0013427734375, 7.00067138671875, 3.50033569335937, 1.75016784667968, 0.875083923339843, 0.4375419616699215, 0.2187709808349608 }; private static final double[] d = { 3386781.496062992D, 1693390.748031496D, 846695.374015748D, 423347.687007874D, 211673.843503937D, 105836.92175196858D, 52918.46087598425D, 26459.23043799213D, 13229.61521899604D, 6614.807609498003D, 3307.403804749013D, 1653.701902374507D, 826.8509511872533D }; private static final double[] res = { 0.0011159643937610616, 0.0032319287875221232, 0.0044638575750442465, 0.008927715150088493, 0.017855430300176986, 0.03571086060035397, 0.07142172120070794, 0.1428434424014159, 0.2856868848028318, 0.5713737696056635, 1.143547539211327, 2.287295078422654, 4.574490156845308 }; public static final int initWithDpi = 96; public MapAbcToArcGISTLayer(String layerurl,String layername) { super(layerurl); this.layerurl = layerurl; this.layername = layername; initLayer(); } protected void initLayer() { if(getID()==0){ this.nativeHandle = create(); } try { SpatialReference localSpatialReference = SpatialReference.create(WKID); setDefaultSpatialReference(localSpatialReference); Envelope localEnvelope = new Envelope(371987.18333999999D, 252920.58593D, 624459.12035999994D, 423400.07714000001D); setFullExtent(localEnvelope); Point localPoint = new Point(0.0D, 458793.07714); double[] arrayOfDoublescale = d; double[] arrayOfDoubleres = c; int k = d.length; TiledServiceLayer.TileInfo localTileInfo = new TiledServiceLayer.TileInfo( localPoint, arrayOfDoublescale, arrayOfDoubleres, k, 96, 256, 256); setTileInfo(localTileInfo); super.initLayer(); return; } catch (Exception localException) { localException.printStackTrace(); } } @Override protected byte[] getTile(int level, int col, int row) throws Exception { // TODO Auto-generated method stub int nrow = (int) (Math.floor((458400.07714) * res[level] / 256) - row); String strUrl = layerurl + "x=" + col + "&y=" + nrow + "&z=" + level + "&type=ic&layer="+layername+""; HashMap<String, String> localHashMap = new HashMap<String, String>(); byte[] bytes = a.a(strUrl, localHashMap); return bytes; } }
相关文章推荐
- 重写TiledServiceLayer实现Arcgis访问Mapabc地图服务 (转载)
- 重写ArcGIS的TiledMapServiceLayer调用天地图瓦片
- Flex加载 ArcGIS Server发布的切片地图(不直接使用ArcGISTiledMapServiceLayer)
- ArcGIS API for android 重写TiledMapServiceLayer [一]
- 重写ArcGIS的TiledMapServiceLayer调用天地图瓦片
- 重写ArcGIS的TiledMapServiceLayer呼叫世界地图图块
- 扩展DynamicMapServiceLayer和TiledMapServiceLayer,实现访问wms数据和自定义切图数据
- 重写TiledServiceLayer实现本地缓存
- ArcGISTiledMapServiceLayer “json is undefined”错误
- 关于ArcGis发布离线地图服务并使用JS接口访问地图
- ArcGISDynamicMapServiceLayer以ArcGISTiledMapServiceLaye方式使用
- 扩展TiledMapServiceLayer,加载ArcGIS Server发布的切片地图
- Android开发,arcgis自定义layer-历史影像和地图缓存的实现
- ArcGISDynamicMapServiceLayer以ArcGISTiledMapServiceLaye方式使用
- 发布silverlight网站到服务器,服务器本机正常,其它机器不能访问arcgis地图服务
- arcgis server jsapi 地图打印:多图层打印(tiled+dynamic地图服务)
- arcgis api for javascript 一 ArcGISTiledMapServiceLayer
- ArcGISDynamicMapServiceLayer 实现条件过滤
- arcgis for javascript之ArcGISDynamicMapServiceLayer图层控制的实现
- ArcGIS for Android示例解析之离线地图-----LocalTiledLayer