ArcGIS API for JavaScript心得體驗
<script src="http://公網ip/arcgis_js_api/library/3.19/3.19/init.js"> </script>
大家或許已經發現了,我沒有加埠,當時我是這麼想的,因為我的tomcat映射了公網IP,而預設埠就是8080,所以理論上沒加埠是可以的,而且當時我還在瀏覽器中確認了通過這個地址是可以訪問init.js的。可是,通過不帶埠的方式在html中引用卻不起作用,這讓我百思不得其解。這個問題讓我糾結了很久。
**第二個坑:替換路徑要和引用一致**
這個坑快要讓我抓狂了,好不容易知道要加上埠後,但是地圖始終不能出來,我一直想不明白問題出在哪裡,當時還一直以為是自己下載的API檔案有缺漏,重新下載了好幾回,可依舊都是老樣子。但我這種人就是喜歡死磕,有種不達目的決不罷休的蠻勁。第二天起床那會兒,想了下這個問題,突然想到js引用過來,裡面的localhost路徑會不會成了客戶機的localhost了,而實際要指向的應該是伺服器的地址,所以會報錯。這下我感到頓時又有了希望,唰唰唰起床將init.js和dojo.js的localhost也改成了ip。果然,成功了。
**總結require ([],function(){
});
先去官網API中找到自己要的類,然後向require中填入即可。比如,我要建立一張地圖,就先找MAP類,然後在官網中找到相應位置,向require套入相應的程式碼
![001](https://img-blog.csdn.net/20170906144317958?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWdpc2JveQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
但曾經這段程式碼讓我抓狂過:
<script>
var map;
require([
"esri/map",
"esri/layers/ArcGISDynamicMapServiceLayer"
], function (
ArcGISDynamicMapServiceLayer, Map) {
map = new Map("mapDiv", {
sliderOrientation : "horizontal"
});
var dynamicMapServiceLayer = new ArcGISDynamicMapServiceLayer("https://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Population_World/MapServer", {
"opacity" : 0.5
});
map.addLayer(dynamicMapServiceLayer);
});
</script>
看似沒有什麼問題,都是依葫蘆畫瓢,在require中加入了該加的,但是,地圖沒出來,後臺報錯。糾結這裡挺久的,後來也是回過去看官網的demo,發現require的第一個引數的順序要跟回撥函式的引數順序一致。最後解決了這個問題。
## ArcGIS API中的模組
上面我們已經說到,ArcGIS API for JavaScript是建立在dojo之上,遵循AMD規範。所以在學習了ArcGIS API一段時間後,我們要有基本的模組程式設計思想了,不能像一開始那樣只知道照著官網的demo去寫。
AMD規範簡單到只有一個API,即define函式:
define([module-name?], [array-of-dependencies?], [module-factory-or-object]);
其中:
- module-name: 模組標識,可以省略。
- array-of-dependencies: 所依賴的模組,可以省略。
- module-factory-or-object: 模組的實現,或者一個JavaScript物件。
從中可以看到,第一個引數和第二個引數都是可以省略的,第三個引數則是模組的具體實現本身。
具體怎麼建立一個模組呢,可以參考這兩篇文章:
- [《官網文件-Write A Class》](https://developers.arcgis.com/javascript/3/jshelp/intro_javascript_classes.html)
- [《建立類(點選獲得位置資訊)—ArcGIS API for JavaScript》](http://blog.csdn.net/agisboy/article/details/77198960)
**擴充套件模組**。用面向物件的語言來說就是繼承,我們可以繼承某個已有的類,然後擴充套件其功能。最常見的就是`TiledMapServiceLayer`類了,我們經常擴充套件這個類來實現載入非ArcGIS Server釋出的切片服務,比如載入天地圖切片、谷歌地圖切片等。
**建立模組**。我們可以將一些功能整理成模組,不斷積累自己的模組不僅可以大大避免寫重複程式碼,還能鞏固和加深對ArcGIS API的學習。比如我們經常要給地圖配置一個工具條,工具條實現了地圖的基本功能(放大、縮小、平移、座標拾取、測量等)我們可以將工具條整理成一個模組,這樣下次使用時就不用再敲那麼多程式碼了。
##
為什麼不用百度(或高德)
很多人問過我為什麼要學習ArcGIS API for JavaScript,同樣的功能用百度地圖API更容易實現。其實問這個問題的人一般不是GIS專業或者是剛開始接觸地圖開發。的確,百度地圖是很強大,我們接觸的應用大部分也是基於百度地圖API(或高德),可是這些應用用地圖的主要目的是展示某些位置資訊而已,比如共享單車APP。在共享單車APP中,地圖的主要作用是展示單車和使用者的位置,這些展示功能用百度或高德確實很方便。但是當我們要用地圖去實現一些複雜功能時,用百度地圖API就比較麻煩了,而ArcGIS API能更好的處理這些問題,因為它能和ArcGIS其它產品無縫的對接。比如我們要做一個城市的消防救援系統,最基本的網路分析,如果用百度API去實現這些功能估計夠嗆,而ArcGIS API卻能快速的實現。
其實要想知道ArcGIS API比百度或高德等API的強大之處,開啟你ArcGIS的工具箱你就懂了,雖然ArcGIS API還不能完全實現工具箱裡的所有功能,但這一定是ArcGIS API的目標吧。
相關推薦
ArcGIS API for JavaScript心得體驗
> 學習和使用ArcGIS API for JavaScript開發差不多有兩年了吧,跌跌撞撞斷斷續續也做了幾個小專案,學習之路相對比較平滑,但也遇到不少坑坑窪窪,這些坑大部分是自己當時能力所限造成的,也有的是ArcGIS API本身存在的一些問題,本文主
ArcGIS API for Javascript Graphic心得
1、map物件中預設有一個GraphicLayer,置於最頂層,使用它的方式是map.graphics. 比如map.graphics.add(graphci); 2、可以給GraphicLayer新增事件,比如點選事件, dojo.connect(map.graph
使用Arcgis Api for Javascript 調用 本地Portal發布的WebMap
pla basemap 步驟 reat 地址 dap toc cli 配置 步驟: 安裝Arcgis Portal 10.4,Server 10.4,DataStore ,WebAdaptor for IIS,搭建arcgis api for javascript 4
ArcGIS API for JavaScript學習(1):第一個地圖
樣式表 參數 資源 charset 底層 arcgis 順序 api navi 1.簡介 ArcGIS API for JavaScript跟隨ArcGIS 9.3同時發布,是ESRI根據JavaScript技術實現的調用ArcGIS Server REST API接口的一
ArcGIS API for JavaScript 4.4學習筆記[新] AJS4.4和AJS3.21新特性
ack 讀取 port 不同 ide evel arc ges wfs ESRI官網悄無聲息突然更新4.4和3.21,公眾號也沒有什麽消息。照例,給大家看看這次更新有什麽新特性吧。 1. AJS 4.4 官方更新日誌:點我,比較詳細。我在這裏抽一些主幹作為說明。 1.1
Arcgis api for javascript學習筆記-三維地圖的飛行效果
com init viewport window eight put div speed null 其實就只是用到了 view.goTo() 函數,再利用 window.setInterval() 函數(定時器)定時執行goTo()。代碼如下: <!DOCTYP
ArcGIS API for JavaScript 4.6 版本加載高德地
地理信息ArcGIS API for JavaScript 4.X 版本升級後,API發生了很大的變化。 其中就支持了WebEarth展示,主要是通過 esri/views/SceneView 實現的。 在新版本中,默認都是加載Esri自己的地圖。 若想加載其他地圖,可以通過擴展BaseTileLayer實現
ArcGIS API for JavaScript 4.x 與 npm
resolved 進行 ali IE fun IT rop async creat 在4.7版本中,不僅增加了WebGL的渲染支持(渲染前端速度加快,渲染量也加大)、增強了ES6中的Promises語法支持,還支持了npm管理及webpack打包,實屬喜訊。 “意味著可以
ArcGIS API for JavaScript 與 npm 之例子運行
node 服務器環境 arcgis dem git ive bubuko 下載 module 下載官方的demo,4.7的,在終端裏跑了一下,測試成功(未打包) 在測試中精簡掉了不需要的文件,使用http協議跑的(file協議不行哦) 最簡單的目錄如下: 我把以上文件放到
Arcgis api for javascript學習筆記(4.6版本) - 二維MapView中的FeatureLayer顯示標註
meta AS dojo each 自己 round updating 完成後 graph 4.6版本api的FeatureLayer中有提供 labelsVisible 和 labelingInfo 兩個屬性,設置這兩個屬性可以實現顯示將屬性中某個字段作為標註。但是這兩個
[ArcGIS API for JavaScript 4.8] Sample Code-Get Started-widgets簡介
idg com mapview list star evel 好的 gin views 【官方文檔:https://developers.arcgis.com/javascript/latest/sample-code/intro-widgets/index.html】
用Tomcat8.5做Arcgis API for javascript的本地部署
step1:1從arcgis官網上下載Arcgis api for JavaScript 4.3 https://developers.arcgis.com/javascript/latest/guide/release-notes/ ps:前提是你需要有一個esri開
ArcGIS API For JavaScript(六)InfoWindow
ArcGIS API For JavaScript(六)InfoWindow <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"&n
ArcGIS API For JavaScript(五)呼叫GP服務--簡單網路路徑分析
ArcGIS API For JavaScript(五)呼叫GP服務--簡單網路路徑分析 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <
ArcGIS API For JavaScript(四)呼叫GP服務--簡單緩衝區分析
ArcGIS API For JavaScript(四)呼叫GP服務--簡單緩衝區分析 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"&g
ArcGIS API For JavaScript(三)QueryTask&IdentifyTask實現空間查詢
ArcGIS API For JavaScript(三)QueryTask&IdentifyTask實現空間查詢 1、通過QueryTask()實現空間查詢 在地圖上畫一個多邊形,將和多邊形相交的要素找出並高亮顯示,之後動態新增表格,將要素的名稱依次顯示在表格中 <
ArcGIS API for JavaScript 4.9學習筆記一(建立2D/3D地圖)
ArcGIS API for JavaScript 4.9學習筆記一(建立2D/3D地圖) 2D: 程式碼: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta
ArcGIS API for Javascript proxy的配置
為什麼要使用代理proxy? 答:未配置代理時server傳送請求是用get的方式,請求跨域訪問或者URL長度超過瀏覽器限制時,這就需要一個代理檔案proxy來轉發請求。Arcgis Server 10.0 由於不支援CORS,需要配置代理才能在前端js 程式中範圍進行操作,而有時候未配置代理也
ArcGIS API for JavaScript 3.26本地部署(不使用iis)
首先大家可以將3.26下載到本地,隨便找一個資料夾進行存放。 1、以下是我的存放目錄: me.html則是我寫程式碼的地方。 2、接下來看我在wbstrom中的工作引用資料夾 這裡我引用的是sublime資料夾,所以相對應我開啟me.html的時候,網站
ArcGIS API For Javascript GP工具 Printing Tools匯出地圖或者列印地圖(二):GP 服務Printing Tools
ArcGIS API For Js 出圖 按照上一篇寫的,用Printing Tools匯出或者列印地圖原始碼奉上,裡面需要注意跨域問題,要設定代理 //打印出圖 function initPrintMap() { require(['dojo/_bas