FeatureLayer未能顯示標註問題

同事告訴我,我在web頁面上疊加的他們製作的圖層,沒有顯示相應的標註。

“標註?啥東東?”,我一頭霧水。原來,圖層中,一些對象,比如色塊、小圖標,往往會有相關的文字加以說明,這就是所謂的標註。在arcgis中,應該叫“label”。

這裏寫圖片描述

“你看,我打開【要素標註】選項,就有文字,關閉,則消失”,同事在arcgis裏嫺熟地操作着,文字忽隱忽現,刺痛了俺的眼睛。爲何我疊加的圖層沒有出現這些相關文字?

有另外一個同事寫的WEB頁面就有標註。不過,他採用new ArcGISDynamicMapServiceLayer 的方式來加載圖層,而我用的是 new FeatureLayer 的方式。衆所周知,前者是所謂動態圖層,與切片圖層一樣,地圖是從服務器端返回圖片的形式展示在客戶端;而FeatureLayer屬於圖形圖層,客戶端從服務器端拿到的是數據,然後再繪製出來。一般而言,動態圖層和切片圖層可用於底圖,而FeatureLayer用於圖層疊加。

所以,該同事的圖層能顯示標註不足爲奇。那麼,FeatureLayer就沒辦法顯示標註了嗎?網上瘋狂搜索,見到的答案,基本都是添加一個標註,自己設內容、字體、顏色。我想,這適合圖層本身沒有標註,而對於圖層已經有了標註的情況下,爲什麼我們不能夠直接顯示出來呢?

查看FeatureLayer的構造函數,有參數名曰:showLabels,這個就跟標註有關,默認爲false,設爲true不就可以了嗎?

var fl = new FeatureLayer(node.nodePath, {
    mode: FeatureLayer.MODE_ONDEMAND,
    outFields: ["*"],
    showLabels: true
});
1
2
3
4
5
結果還是沒有顯示。原來,光在圖層這裏設置還不夠,map本身也要支持纔行:

return new Map("map", {
    basemap: "delorme",
    center: mapcenter,
    maxZoom: 15,
    minZoom: 5,
    zoom: _zoomdefault,
    extent: bounds,
    logo: false,
    nav: false,
    showLabels: true,//<----------------------
    sliderPosition: "top-right"
});
如此,標註顯示矣。地圖、圖層都要將這個showLables設爲true,缺一不可。

另外,標註是綁定某個字段的,所以,疊加圖層的時候,outFields 一定要包含該字段,否則,標註將顯示“undefined”。

有些圖層未必有標註。這個直接瀏覽圖層服務地址就能看出來:

————————————————
版權聲明:本文爲CSDN博主「左直拳」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/leftfist/article/details/78502405

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章