arcgis for jsapi3 修改featurelayer的graphic
featurelayer,要素圖層/屬性圖層,裡面充滿了一個個的graphic物件。咱們可以在客戶端構建一個featurelayer(featurelayer是graphicslayer的子類),然後在上面任意作畫。
畫的圖形一多,就會有效能的問題。據說這是arcgis for jsapi3的專利,最多隻能支援幾千個graphic,而且渲染的速度還很慢;4的話就好很多了,用webgl繪製,賊快;據說還能直接將資料賦給featurelayer,讓它自己渲染。也就是說,假設資料變了,直接丟給featurelayer,無須指導它一個個怎麼重畫。
但是!4.10有好多坑;所以我們又改回了3.27。呵呵,一切從頭再來,收拾舊河山,朝天闕。雄雞一聲撅一撅;雄雞二聲撅二撅;三聲喚出夏桑菊,掃退火氣與眼屎。
總結一下:
一、批量更新graphic物件
在featurelayer上新增、修改、刪除graphic物件,如果數量很多,最好是呼叫它這個方法:
applyEdits(adds?, updates?, deletes?, callback?, errback?)
已經測試過了,我們構造一個graphic物件,這只是在記憶體上操作而已,只要還沒featurelayer.add(graphic)
,地圖上就還沒生效。但是,你add吧,地圖就會更新;如果成千上萬個地add,就意味著重新整理成千上萬次,就會很慢了。
但用這個applyEdits的話,它應該是隻重新整理一次。
有關這個applyEdits,它可以用在手動構建的featurelayer上。
二、如何更換graphic物件
想當然地,將原來的graphic物件remove,然後再畫一個。
拿衣服!愚不可及!
可以醬紫:
//oldG,newG都是graphic物件 //gemoetry是幾何物件,即形狀、座標等等 oldG = oldG.setGeometry(newG.geometry);