1. 程式人生 > >ArcGIS API ForJS 3.25開發總結(持續更新)

ArcGIS API ForJS 3.25開發總結(持續更新)

一、關於Graphic

首先看張圖:

這是整個Graphic涉及的一些類,上圖中的可以進行客戶端點、線、面的表示。在伺服器端的進行修改時applyEdits函式傳入的也是graphic,drawToolbar繪圖類也涉及到graphic,總而言之,graphic可以視為一個要素元素,感覺更應該稱之為圖形

返回一個字串,data是資料,template是中佔位符模板

1、模板的寫法

HTML寫法

              var t = "<b>${NAME}</b><hr><b>2000 人口數量: </b>${POP2000:NumberFormat}<br>"
            + "<b>2000 人口密度: </b>${POP00_SQMI:NumberFormat}<br>"
            + "<b>2007 人口密度:</b>${POP2007:NumberFormat}<br>"
            + "<b>2007 人口密度: </b>${POP07_SQMI:NumberFormat}";
              //attributes中的欄位進行替換
              var content = esriLang.substitute(evt.graphic.attributes, t);

 該方法一般與infoTemplate類一塊用

三、關於FeatureLayer載入服務

1、釋出的要素服務無          

2、地圖服務的單個圖層

四、關於TiledMapServiceLayer的子類

1、ArcGISTiledMapServiceLayer:用於訪問ArcGIS Server釋出的地圖切片服務

2、VETiledLayer:用於訪問微軟的Bing地圖,但是其        名稱空間在3.25不在layer圖層下,在"esri/virtualearth/VETiledLayer"

3、OpenStreetMapLayer:用於訪問開放街道地圖(OSM)

4、WMTSLayer:用於訪問OGC標準的WMTS服務

5、WebTiledLayer:用於訪問非ArcGIS Server釋出的切片服務

五、esri/config模組

ArcGIS API For JS有一些預設的配置,例如漫遊動畫時間、縮放持續時間、縮放重新整理速度等,都可以通過該模組進行控制。

使用示例:

                esriConfig.defaults.map.panDuration = 1000;
                esriConfig.defaults.map.panRate = 50;
                esriConfig.defaults.map.zoomDuration = 1000;
                esriConfig.defaults.map.zoomRate = 50;

六、關於地圖的配置(寫成一個物件)

好處:開發人員容易配置,程式碼不亂,更改服務更容易。

示例:

/* --------------------------------地圖初始資訊配置-------------------------------- */
function MapConfig() { }
MapConfig.mapInitParams = {
    fullExtent: {//全圖範圍
        xmin: 121.29585473952106,
        ymin: 39.49550677343447,
        xmax: 123.05162192862765,
        ymax: 139.982938778863684
    },
    extent: {//初始化範圍
        xmin: 120.8696333,
        ymin: 38.65953686,
        xmax: 123.6199347,
        ymax: 40.202622
    },
    spatialReference: {//地圖空間參考座標系
        wkid: 4326
    },
    lods: [//針對瓦片的地圖服務的,用來控制瓦片級別的顯示,有時候切片級別太多的話,可以只顯示部分的級別地圖
           //resolution scale這些值的獲取參照釋出的切片地圖服務詳情
           { "level": 0, "resolution": 0.00118973050291514, "scale": 500000 },
           { "level": 1, "resolution": 5.9486525145757E-4, "scale": 250000 },
           { "level": 2, "resolution": 2.3794610058302802E-4, "scale": 100000 },
           { "level": 3, "resolution": 5.710706413992673E-5, "scale": 24000 },
           { "level": 4, "resolution": 2.3794610058302804E-5, "scale": 10000 }
    ]
}
/*地圖呼叫*/
MapConfig.vecMapUrl = "http://localhost:6080/arcgis/r ... rcGIS動態服務
MapConfig.imgMapUrl = "http://localhost:6080/arcgis/r ... rcGIS切圖服務

七、Dojo類的程式碼宣告示例

define(["dojo/_base/declare"], function (declare) {
    return declare("aClass", null, {
        mynum: 10,       //宣告一個變數(在這個類裡是全域性的)
        constructor: function (num) {  //這個是建構函式,宣告類的例項時,傳的引數在這裡
            console.log(num);       //我們讓宣告例項時,輸出他傳的引數
        },
        add: function (num1) {    //類方法,呼叫類方法時,返回值是引數+10
            return this.mynum + num1;   //必須加this.mynum才能呼叫類內建的變數
        },
        getMynum: function () {    //返回類內部的變數
            return this.mynum;
        },
        mynumAdd:function(){
            this.mynum++;
            return this.mynum;
        }
    })
})

八、我們在要釋出模型工具(插值、緩衝區、等值線、等值面等等)之前,為什麼會要把輸入要素型別改成輸入要素類?

當我們使用查詢、地理處理和路徑分析的時候我們常常將FeatureSet輸入和輸出引數。

FeatureSet:是要素類的輕量級的表示,相當於地理資料庫的一個要素類,是Feature(要素)的集合,FeatureSet的每個Feature可能包含Geometry、符號、屬性、和一個InfoTemplate。如果FeatureSet不包含Geometry,只包含屬性,那麼FeatureSet可以看作一個表,其中每個Feature是一個行物件。

九、兩個修改要素方面的小部件

1、AttributeInspector

效果如上圖,點擊出現彈窗,進行要素的編輯修改,點我檢視demo

2、FeatureTable

這個基本功能和上面差不多,點我檢視demo

十、esri/config類

1、IO:這裡面涉及一些跨域等方面的設定

2、map:這裡面主要涉及一些地圖狀態引數設定

3、workers:AMD載入一些設定

4、kmlService:該引數預設為空,具體什麼用還沒看懂

5、geometryService:該引數對於一些分析類的東西雖然有時候我們無法釋出我們的模型,但是我們可以用online上面的,非常方便的。

使用示例:

        esriConfig.defaults.map.panDuration = 1; // time in milliseconds, default panDuration: 350
        esriConfig.defaults.map.panRate = 1; // default panRate: 25
        esriConfig.defaults.map.zoomDuration = 100; // default zoomDuration: 500
        esriConfig.defaults.map.zoomRate = 1; // default zoomRate: 25
        esriConfig.defaults.geometryService = new GeometryService("https://utility.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer");

        esriConfig.defaults.io.proxyUrl = "/proxy/";
        esriConfig.defaults.io.alwaysUseProxy = false;

十一、未完待續。。。。。