做者: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()
刷新工具類的內部狀態