二、打开地图
一个最基本的打开地图的应用脚本,使用由ERSI提供的缺省数据,以及CDN的API(在线API):
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>第一个地图应用</title>
<link rel="stylesheet" href="https://js.arcgis.com/3.18/dijit/themes/claro/claro.css"/>
<link rel="stylesheet" type="text/css" href="https://js.arcgis.com/3.18/esri/css/esri.css" />
<style>
html, body ,#map{ height: 100%; width: 100%; margin: 0; padding: 0; }
</style>
<script type="text/javascript" src="https://js.arcgis.com/3.18" ></script>
<script>
//Dojo模块,使用在线缺省数据。
require(["esri/map", "dojo/domReady!"], function (Map) {
//初始化<div id="map" ></div>的map容器
var map = new Map("map", {
center: [-118, 34.5],
zoom: 8,
basemap: "topo"
});
});
</script>
</head>
<body class="claro">
<div id="map" >
</div>
</body>
</html>
脚本运行效果如图所示:
打开地图的核心代码是:
....
var map = new Map("map", {
center: [-118, 34.5],
zoom: 8,
basemap: "topo"
});
....
这段代码相当于创建了一个地图容器,定位在center处,显示在第8级。3.18的Map对象可以认为是一个view+doc的对象,在4.0后,就将Map和View分开了,一个负责数据管理,一个负责显示及控制。ESRI在网上为basemap提供的缺省选项包括”topo”,"satellite", "hybrid", "topo", "gray", "oceans", "osm", "national-geographic"等几类。去掉basemap就是打开一个白图。
如从打开一个空白地图开始,逐个打开图层并加入地图,就可以完成地图的调用了,类似如下代码:
...
var map,tiled_layers;
//创建map
map = new Map("map", {
center: [-96.541, 38.351],
zoom: 14,
slider: false
});
//根据图层服务的URL地址,或图层文件的URL地址打开图层
tiled_layers= new ArcGISTiledMapServiceLayer("图层服务所在的URL",{打开选项,可全用缺省});
//加入地图
map.addLayer(tiled_layers);
...
当然,前提是这些图层的都是预先配准好的,显示风格也有了较好的缺省设置,否则的话,就得对他们的显示属性进行设置。常用的的图层对象主要有以下几种:
...
GraphicsLayer,一般矢量地图,一般用来处理业务数据;
FeatureLayer,矢量地图,由Arcgis维护的矢量地图数据
ArcGISTiledMapServiceLayer经过切片缓冲过的地图,背景地图一般用这种方式;
ArcGISDynamicMapLayer,从mdx文档发布出来的矢量图
MapImageLayer,经地理编码的影像,可与地图一块叠加;
WMSLayer,符合OGC Web Map Services (WMS)的服务提供的Map图层.;
WFSLayer ,符合OGC Web Feature Services (WFS)要求的服务提供的矢量图层.;
CSVLayer,利用服务器上的CSV file (.csv, .txt)产生的图层。
KMLLayer,利用服务器上的(.kml, .kmz).产生的图层。(.kml, .kmz);
GeoRSSLayer,利用服务器上的GeoRSS文件产生的图层。
...
显然,这些图层可以来自不同服务。对于经arcgis for server发布出来的地图,在服务上右键选中property可以看服务地址:例如为http://localhost/arcgis/services/zy/MapServer,但实际引用方法为:http://localhost/ArcGIS/rest/services/zy/MapServer,可以将该地址复制到浏览器地址查看是否正确。
图层对象里实际上可以包含多个图层,每个图层的在特定地图比例尺范围内的可见性一般在发布时就设置好了(就应该设置好),要注意这一点。