我使用sketchViewModel
来编辑图层。我有下一个逻辑:
- 上传基本模型;
- 编辑模型;
- 将编辑模型保存到localStorage
- 从localStorage上载模型。
当我从本地存储上传模型并将其添加到graphicLayers时,出现错误:
[esri.core.accessor] accessor#set Invalid property value,value needs to be one of
'esri.geometry.Extent','esri.geometry.Multipoint','esri.geometry.Point','esri.geometry.Polyline','esri.geometry.Polygon',or a plain object that can autocast (having .type = 'extent','multipoint','point','polyline','polygon')
[esri.core.accessor] accessor#set Invalid property value,value needs to be one of
'esri.symbols.SimpleFillSymbol','esri.symbols.PictureFillSymbol','esri.symbols.PictureMarkerSymbol','esri.symbols.SimpleLinesymbol','esri.symbols.SimpleMarkerSymbol','esri.symbols.TextSymbol','esri.symbols.LabelSymbol3D','esri.symbols.Linesymbol3D','esri.symbols.MeshSymbol3D','esri.symbols.PointSymbol3D','esri.symbols.PolygonSymbol3D','esri.symbols.WebStyleSymbol','esri.symbols.CIMSymbol',or a plain object that can autocast (having .type = 'simple-fill','picture-
fill','picture-marker','simple-line','simple-marker','text','label-3d','line-3d','mesh-3d','point-3d','polygon-3d','web-style','cim')
这是我的代码:
sketchViewModel.on("update",checkGraphicUpdate);
function checkGraphicUpdate(evt) {
if(evt.state === 'complete'){
// dispatchRecentChanges(geometryGraphics);
localStorage.setItem('features',geometryGraphics.toJSON())
}
}
if(uploadView){
graphicsLayer.removeAll();
JSON.parse(localStorage.feautures).forEach(
function(featureJson){
graphicsLayer.add(new Graphic(featureJson))}
);
}
这是LocalStorage中JSON中元素的示例:
{"geometry":{"spatialReference":{"wkid":4326},"paths":[[[-111.3,52.68],[-98,49.5],[-93.94,29.89]]]},"symbol":{"type":"esriSLS","color":
[0,255,255],"width":4,"style":"esriSLSSolid"},"attributes":
{"DATA_SOURSE":"3","AVERAGE_DEpth":"1.2","MATERIAL":"14","PLACINGFORM":"2","MEAS
UREDLENGTH":"12.4","DIAMETER":"6","STREETNAME":"אבן
עזרא","DIAMETERUNIT":"'אינצ","STATUS":"1","LOCATION":"13","INSTALLYEAR":"2018","
Title":"Water_Pipe_Section [F3FA]","PURPOSE":"1"},"popupTemplate":
{"popupelements":[{"type":"fields","fieldInfos":
[{"fieldName":"DATA_SOURSE","visible":true},{"fieldName":"AVERAGE_DEpth",{"fieldName":"MATERIAL",{"fieldName":"PLACINGFORM",{"fieldName":"MEASUREDLENGTH",{"fieldName":"DIAMETER",{"fieldName":"STREETNAME",{"fieldName":"DIAMETERUNIT",{"fieldName":"STATUS",{"fieldName":"LOCATION",{"fieldName":"INSTALLYEAR",{"fieldName":"Title",{"fieldName":"PURPOSE","visible":true}]}],"title":"{Title}"}}
我知道这是由于存储的数据中的错误所致。但是如何保存这些数据,然后正确提取呢?