本文主要是针对ArcGis常用的一些方法进行整理,方便日后进行查看。使用的地图版本为V3.30。
创建地图
创建地图前,首先需要引入一个js库和一个css库,如下所示:
1.引入库文件
<link rel="stylesheet" href="https://js.arcgis.com/3.30/esri/css/esri.css">
<script src="https://js.arcgis.com/3.30/"></script>
2.创建地图容器
在body标签里面创建一个div,设置id为map
:
<div id="map"></div>
3.地图初始化
考虑到以后需要多次使用地图相关的API,对一些常用的方法进行了封装,创建一个MapKit
的对像,然后在其中定义方法,如下所示:
JS代码
/*
* 地图工具包
* */
function MapKit() {
var map;//地图对象
/*
* 地图初始化
* center:地图中心点
* zoom:初始化等级
* basemap:基础地图
* */
this.initMap = function (center,zoom,basemap) {
var self = this;
var earis = ["esri/map"];
var config = {};
config.center = center?center:[113.255, 23.022];
config.zoom = zoom?zoom:10;
config.basemap = basemap?basemap:'topo';
require(earis, function(Map) {
self.map = new Map("map", config);
});
}
}
"esri/map"
:初始化地图时需要引入该包,使用require
进行引入。如果需要引入其它的包,添加到数组中就行了。
Map
:用于创建地图,通常使用div
作为容器来装载地图,div
的宽度和高度决定了地图的尺寸。创建一个div
后,指定一个id
,然后进行地图对象的初始化,Map
初始化时需要两个参数,一个是div
的id
,另一个是地图相关配置的对象。
center
:用于设置地图的中心点。
zoom
:地图缩放等级。如果没有设定等级,将根据底图的初始范围来计算。
basemap
:底图,主要包括"streets" , "satellite" , "hybrid", "topo", "gray", "dark-gray", "oceans", "national-geographic", "terrain", "osm", "dark-gray-vector", gray-vector", "streets-vector", "streets-night-vector", "streets-relief-vector", "streets-navigation-vector" and "topo-vector"等类型。可以在页面上加一个select
选择器,对每一种底图进行切换,查看每一种底图的样式。demo
中已经加入了选择器,可以直接查看。
extent
:设置地图范围,设置该属性时,需要引入esri/geometry/Extent
,初始化extent
如下所示:
new Extent({xmin:-20098296,ymin:-2804413,xmax:5920428,ymax:15813776,spatialReference:{wkid:54032}});
isPan
:是否可以平移,设置为false
时,将禁用地图平移。
isDoubleClickZoom
:双击是否可以缩放。
isScrollWheel
:鼠标滚轮滚动时是否可以进行缩放。
logo
:是否显示logo。
nav
:是否显示平移的按钮。
slider
: 是否显示放大缩小的鱼骨条
html代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>地图工具包</title>
<link rel="stylesheet" href="https://js.arcgis.com/3.30/esri/css/esri.css">
<script src="https://js.arcgis.com/3.30/"></script>
<style>
html, body, #map {
height: 100%;
margin: 0;
padding: 0;
}
</style>
</head>
<body>
<div id="map"></div>
</body>
<script type="text/javascript" src="./js/MapKit.js"></script>
<script>
var mapKit = new MapKit();
mapKit.initMap([113.255, 23.022],8);
</script>
</html>
运行后,可以直接看到初始化的地图,如下所示:
地图导航-Navigation
使用地图的导航条功能时,需要引入 esri/toolbars/navigation
包,然后再使用new Navigation(map)
进行初始化。封装的导航功能主要包括放大、缩小、全图、上一视图、下一视图等操作。如下所示:
/*
* 放大
* */
this.zoomIn = function () {
var zoom = this.map.getZoom();
this.map.setZoom(zoom + 1);
}
/*
* 缩小
* */
this.zoomOut = function () {
//用toolbars的方法无效,直接操作zoom
// this.navToolbar.activate(esri.toolbars.Navigation.ZOOM_OUT);
var zoom = this.map.getZoom();
this.map.setZoom(zoom - 1);
}
/*
* 还原到地图初始化的状态
* */
this.fullMap = function () {
this.navToolbar.zoomToFullExtent();
}
/*
* 切换到下一视图
* */
this.nextExtent = function () {
this.navToolbar.zoomToNextExtent();
}
/*
* 切换到上一视图
* */
this.prevExtent = function () {
this.navToolbar.zoomToPrevExtent();
}