天天看點

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?)      
//g,newg都是graphic對象
//gemoetry是幾何對象,即幾何形狀、坐标等等
//symbol,外形
newg.attributes.OBJECTID = g.attributes.OBJECTID;//假設OBJECTID是主鍵,要保留
g = g.setGeometry(newg.geometry).setSymbol(newg.symbol).setAttributes(newg.attributes);