描述
ArcGIS JavaScript API的1.2版本加入更多地圖如何緩存,切片和地圖服務的控制。本例展示了如何限制地圖能夠接收切片的比例等級。如果不想用戶過分的放大或縮小,即使切片存在這些極端的比例,這個方法是有用處的。
本例使用ArcGIS Online上的一個影像圖層。這個服務有16等級可以使用,但是應用被設置為僅僅使用相近的8個等級。因為應用系統重點是一個國家公園,用戶不需要放大太多。
在本例中,細節的等級通過lods[]數組配置,lods[]數組包含每個級別的索引數信息,分辨率和比例。如何輕松地接收所有的信息呢?最好的方式是轉到服務的Services Directory頁面,然后添加?f=pjson到URL。下面是一個示例:
http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_Imagery_World_2D/MapServer?f=pjson
能夠從這里拷貝需要的詳情等級。一旦配置了數組,能夠在構造函數里設置地圖的lods。僅僅能在創建地圖的時間設置詳情等級。
1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> 2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/strict.dtd"> 3 <html> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 6 <meta http-equiv="X-UA-Compatible" content="IE=7" /> 7 <title>ArcGIS Online tiled maps.</title> 8 9 <link rel="stylesheet" type="text/css" href="styles.css" 10 href="http://serverapi.arcgisonline.com/jsapi/arcgis/1.6/js/dojo/dijit/themes/tundra/tundra.css"> 11 <link rel="stylesheet" type="text/css" href="styles.css" 12 href="http://serverapi.arcgisonline.com/jsapi/arcgis/1.6/js/dojo/dijit/themes/soria/soria.css"> 13 <script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=1.6"></script> 14 15 <script type="text/javascript"> 16 dojo.require("esri.map"); 17 var map; 18 function init(){ 19 20 //在這個示例中,我剔除ESRI_Imagery_World_2D的9到16級之間的地圖服務,一旦創建了映射id將被重新設置水平(1-8) 21 var lods = [ 22 {"level" : 9, "resolution" : 0.001373291015625, "scale" : 577143.747208662}, 23 {"level" : 10, "resolution" : 0.0006866455078125, "scale" : 288571.873604331}, 24 {"level" : 11, "resolution" : 0.00034332275390625, "scale" : 144285.936802165}, 25 {"level" : 12, "resolution" : 0.000171661376953125, "scale" : 72142.9684010827}, 26 {"level" : 13, "resolution" : 8.58306884765629E-05, "scale" : 36071.4842005414}, 27 {"level" : 14, "resolution" : 4.29153442382814E-05, "scale" : 18035.7421002707}, 28 {"level" : 15, "resolution" : 2.14576721191407E-05, "scale" : 9017.87105013534}, 29 {"level" : 16, "resolution" : 1.07288360595703E-05, "scale" : 4508.93552506767} 30 ]; 31 32 map=new esri.Map("map",{ 33 extent:new esri.geometry.Extent({xmin:110,ymin:31,xmax:117,ymax:37,spatialReference:{wkid:4326}}) 34 ,lods:lods 35 }); 36 37 dojo.connect(map,"onExtentChange",function(extent,delta,outLevelChange,outLod){ 38 dojo.byId("scale").innerHTML="LOD Level:<i>"+outLod.level 39 +"</i>Resolution:<i>"+outLod.resolution 40 +"</i>Scale:<i>"+outLod.scale+"</i>;" 41 42 }); 43 44 var tiledMapServiceLayer=new esri.layers.ArcGISTiledMapServiceLayer( 45 "http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_Imagery_World_2D/MapServer" 46 ); 47 map.addLayer(tiledMapServiceLayer); 48 49 50 /*加載不了圖片*/ 51 var heNanDynamicMapServiceLayer=new esri.layers.ArcGISDynamicMapServiceLayer( 52 "http://118.144.36.6:6080/arcgis/rest/services/chakan/henan530/MapServer" 53 ); 54 heNanDynamicMapServiceLayer.setOpacity(0.75); 55 map.addLayer(heNanDynamicMapServiceLayer); 56 57 58 } 59 60 dojo.addOnLoad(init); 61 </script> 62 </head> 63 64 <body class="tundra"> 65 <table> 66 <tr> 67 <td> 68 <div id="map" class="soria" style="position:relative;width:900px;height:600px;border:1px solid #000"> 69 <span id="scale" style="position:absolute;right:10px;bottom:10px;z-index:100;color:white"></span> 70 </div> 71 </td> 72 73 </tr> 74 </table> 75 </body> 76 </html> 77 78 79
