天天看點

Arcgis開發系列7 - arcgis js FeatureLayer setDefinitionExpression過濾

一、問題:之前寫了一個根據條件過濾的方法,所有資料都能加載出來,過了幾天突然一次性加載不出來了,而是根據地圖縮放比例陸續加載,需要通過zoomIn跟zoomout才能讓過濾圖層顯示,研究了半天終于找到是featureLayer的mode加載模式的原因

二、原因:跟featurelayer的查詢顯示有關,就是mode的設定

mode參數定義的顯示模式,可能最重要的參數之一,當建立一個特征圖層時,需要指定具體的模式來擷取特征資訊,因為模式決定特征何時以及如何從服務端傳輸到用戶端,是以模式的選擇影響應用程式的速度和外觀。模式分為:快照模式、按需模式、選擇模式、自動模式。

1、

MODE_SNAPSHOT

(快照模式)

快照模式是将從圖層擷取到的所有特征資訊傳輸到用戶端浏覽器中來顯示地圖,是以使用該模式需要考慮到圖層的大小,一般僅有少量資料會考慮該模式,大量資料會降低性能,優點是一次性将所有信特征資訊傳輸到用戶端,不用再次請求用戶端,可以提高應用程式性能,規定任何一次快照模式隻能傳回不能超過1000個特征值,當然該值可以在ArcGIS server配置管理。

就是将地圖範圍内的資料一次加載迕來,當再次移動地圖,範圍改變的時候,不再向伺服器請求

2、

MODE_ONDEMAND(按需模式)

按需模式顧名思義就是需要的時候才去擷取特征資訊,也就是說隻傳回目前視野範圍内的資料,是以在平移或者縮放會重新向伺服器發起請求,這種模式可以很好的處理大量資料,雖然每次都要往返伺服器。

随着地圖範圍的改變,要素才加載,按照所需的範圍向伺服器請求

3、

MODE_SELECTION(選擇模式)

選擇模式一開始并不請求伺服器,它僅當用戶端進行選擇後才傳回特征資料。被選擇的特征資料從伺服器傳到用戶端,随後進行顯示

需要進行一個選擇的操作,用矩形選擇工具選擇一個範圍,範圍要素加載。

4、

MODE_AUTO

(自動模式)

根據服務的特性委托按需或快照模式。這僅适用于托管的特征服務。

三、圖層過濾

var featureLayer = new FeatureLayer("https://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/3", {
          mode: FeatureLayer.MODE_SNAPSHOT,
          outFields: ["*"],
          infoTemplate: infoTemplate
  });
        
featureLayer.setDefinitionExpression("STATE_NAME = 'Kansas'");
featureLayer.setDefinitionExpression(objectid in (1,2,3));
           

繼續閱讀