做者:BLUE日期:2019-07-09javascript
描述:arcgis for js 开发包,基于arcgis for js 3.9css
点击【这里】下载SDKhtml
该开发包是基于arcgis for javascript 3.9,是对原始API的一个扩充,原始API正常使用,该SDK仅封装了开发过程当中经常使用的方法,开发包内使用瓦片下载的方式对全国天地图底图进行加载,默认坐标系为WGS 84,若是你是CGCS2000坐标系,那你能够放心使用;若是须要使用其余REST服务做为底图,你能够构造BaseMap实例的时候本身指定坐标系。java
BaseMap类(基础底图类)git
DrawLayer类(绘制类)github
GraphicLayer类(要素图层类)json
DijitLayer类(工具类)api
简洁版资源:数组
<link rel="stylesheet" type="text/css" href="/arcgisdk/3.9compact/js/dojo/dijit/themes/dijit.css" /> <link rel="stylesheet" type="text/css" href="/arcgisdk/3.9compact/js/esri/css/esri.css" /> <script type="text/javascript" src="/arcgisdk/3.9compact/init.js"></script>
完整版资源:缓存
<link rel="stylesheet" type="text/css" href="/arcgisdk/3.9compact/js/dojo/dijit/themes/dijit.css" /> <link rel="stylesheet" type="text/css" href="/arcgisdk/3.9/js/esri/css/esri.css" /> <script type="text/javascript" src="/arcgisdk/3.9/init.js"></script>
若你是使用的完整版请将 /arcgisdk/3.9compact/init.js 和 /arcgisdk/3.9compact/js/dojo/dojo/dojo.js 中的 localhost:8009 修改为你的项目地址和端口若你是使用的是完整版请将 /arcgisdk/3.9/init.js 和 /arcgisdk/3.9/js/dojo/dojo/dojo.js 中的 localhost:8009 修改为你的项目地址和端口
<!--建立一个具备id属性的div--> <div id='map' style="height: 100%;width:100%;background-color:darkgrey"></div> <script> // 建立一个全局对象用于存储基础地图对象 var baseMap = null; // 引入BaseMap模块 require(["BAMAP/BaseMap" ], function (BaseMap) { // 实例化一个基础底图类 baseMap = new BaseMap("map", { center: [116.39, 39.91],zoom:9 }).init(); }) </script>
基础底图类,该类继承于Map 对象,有关Map对象的资料请看【这里】
【提示】该类全部的非原始方法均可以链式调用
require(["BAMAP/BaseMap"], function(BaseMap) { /* code goes here */ });
new BaseMap(divId, options?); // 通常建议使用下面这样进行实例化的同时进行初始化,这样能够直接呈现底图 new BaseMap("map", { center: [116.39, 39.91],zoom:9 }).initTdt();
# initTdt()
初始化全国天地图做为底图
# initTiledMap(sldtserver?,slbzserver?,yxdtserver?)
初始化有公开的缓存映射服务资源做为底图
【提示】默认加载成都天地图做为底图,不保证永远能成功,若是服务被关闭则加载会失败
# changeBaseMap(id)
切换底图类型
# toggleLable()
切换标注
# goto(lng, lat, zoom?)
将底图中心定位到指定位置
# adbLayer(layer, index?)
特殊的附加图层,可用于图层管理,不建议直接使用原型的添加图层方法
# hideAttachLayer(name)
隐藏附加图层,只针对 adbLayer 方法添加的图层有效
# showAttachLayer(name)
显示附加图层,只针对 adbLayer 方法添加的图层有效
# destoryAttachLayer(name)
销毁附加图层,只针对 adbLayer 方法添加的图层有效
# hasLayer(name)
判断图层是否存在,只针对 adbLayer 方法添加的图层有效
# zoomIn(zoom)
地图放大
# zoomOut(zoom)
地图缩小
# addWMSLayer(url, name, extent, callback?)
添加WMS图层
# addPointGeoJsonLayer(name, url, infoTemplate1?, symbol?, callback?, options?, maxdraw?)
添加GeoJson点图层
【注意】调用此API时候请添加如下两个引用
<script src="/arcgisdk/vendor/terraformer/terraformer.min.js"></script> <script src="/arcgisdk/vendor/terraformer-arcgis-parser/terraformer-arcgis-parser.min.js"></script>
var infoTemplate1 = { title: "地块信息", content: "地块编码:${DKBM}[br/]面积(亩):${面积亩}" } var symbol={ imgurl:"/static/map/img/local-marker.png", width:10, height:10 } baseMap.addPointGeoJsonLayer('dk', '/main/map/geodata/xinjingdk.json', infoTemplate1, symbol, function (layer) {/* code goes here */ });
# addLineGeoJsonLayer(name, url, infoTemplate1?, symbol?, callback?, options?, maxdraw?)
添加GeoJson点图层
【注意】调用此API时候请添加如下两个引用
<script src="/arcgisdk/vendor/terraformer/terraformer.min.js"></script> <script src="/arcgisdk/vendor/terraformer-arcgis-parser/terraformer-arcgis-parser.min.js"></script>
# addGonGeoJsonLayer(name, url, infoTemplate1?, symbol?, callback?, options?, maxdraw?)
添加GeoJson面图层
【注意】调用此API时候请添加如下两个引用
<script src="/arcgisdk/vendor/terraformer/terraformer.min.js"></script> <script src="/arcgisdk/vendor/terraformer-arcgis-parser/terraformer-arcgis-parser.min.js"></script>
图形绘制类,该类中封装了一些经常使用的绘制方法;实例化是时候传入BaseMap实例对象,不要将该类的实例做为图层叠加。
require(["BAMAP/DrawLayer"], function(DrawLayer) { /* code goes here */ });
new DrawLayer(Map) // Map为BaseMap类的实例
# drawPoint(callback?)
绘制点
# drawMultiPoint(callback?)
绘制多点
# drawLine(callback?)
绘制直线段
# drawPolyLine(callback?)
绘制折线
# drawPolyGon(callback?)
绘制多边形
# drawFreePolyGon(callback?)
手绘多边形
# drawArrow(callback?)
绘制箭头
# drawTrianGle(callback?)
绘制三角形
# drawCircle(callback?)
绘制圆形
# drawEllipse(callback?)
绘制椭圆
# drawRectangle(callback?)
绘制矩形
# clear()
清除绘制图层并释放绘制状态
# clsAndte()
清除绘制并保持绘制状态
# deactivate()
释放绘制状态不清空绘制要素
该图层类可根据坐标点绘制各类各样的要素,经常使用于绘制专题图层,该对象继承于GraphicsLayer对象,有关GraphicsLayer对象的信息,你能够戳【这里】
【注意】该图层的方法须要调在实例添加到BaseMap中后才可使用,也就是调用BaseMap的adbLayer方法以后
require(["BAMAP/GraphicLayer"], function(GraphicLayer) { /* code goes here */ });
new GraphicLayer(options?)
有关options的详情,戳【这里】
# addPoint(lng, lat, infoTemplate?, attr?, symbol?, localAnim?)
添加点要素
var infoTemplate = {title:"测试",content:"<h3>${foo}</h3>"}; var attr = {foo:"hello"}
# addMultiPoint(points, infoTemplate?, attr?, symbol?)
添加多点要素
# addLine(path, infoTemplate?, attr?, symbol?)
添加线要素
# addGon(path, infoTemplate?, attr?, symbol?)
添加面要素
【提示】这儿得颜色最好使用[R,G,B,A]的形式
# addCricle(lng, lat, radius, infoTemplate?, attr?, symbol?)
添加圆要素
【提示】这儿得颜色最好使用[R,G,B,A]的形式
# addText(text, lng, lat, symbol?,offset?)
添加文字要素
# addFlowText(text, paths, symbol?,offset?)
添加流式文字/沿线文字,均分文字间距
【注意】该方法不要大数据量调用,大数据量有内存溢出风险
# addSupFlowText(text, paths, symbol?,offset?)
添加流式文字/沿线文字
该方法适用于线的坐标点数量大于文字数量时候,并非均分文字间距
工具图层,好比测距,侧面,固然可使用arcgis提供的原生的。
实例化是时候传入BaseMap实例对象,不要将该类的实例做为图层叠加。
require(["BAMAP/DijitLayer"], function(DijitLayer) { /* code goes here */ });
new DijitLayer(Map,options?) // Map为BaseMap类的实例
options是一个键值对对象,值都为函数,在对应状态的时候会被回调,回调参数都为一个对象
# measureDis()
测距
# measureArea()
测面
# clearMeas()
清空测量数据
# activateToolbar(graphic)
编辑要素
# deactivate()
释放编辑状态
# getCurrentState()
获取当前编辑的一些状态
{tool:当前工具,graphic:正在编辑的要素,isModified:要素是否被修改}
# refresh()
刷新工具类的内部状态