graphic中 fromJSON的正确用法是什么?

因为想加载shp图层,搜索发现有个方法是把shp文件转成json,再加载。
 
加载时候采用graphiclayer,graphic想使用api中提到的fromJSON方法,但是尝试了很久都无法加载,
 
但是如果利用json中的ring这一项,新建polygon对象,在新建graphic时定义geometry为polygon,就能加载。
 
我觉得既然提供fromJSON这个方法应该不用绕着走路,更方便吧,请问下怎么使用这个方法。
已邀请:

gishome - GIS之家,我们的团队,具备丰富的webgis项目开发经验以及开源GIS项目经验(openlayer+geoserver、三维开源GIS cesium.js);GIS之家知乎专栏:https://zhuanlan.zhihu.com/gishome

赞同来自: puppychen

我举个例子吧,假如你的shp是面的,比如:
plotGeo:'{"geometry":{"rings":[[[12363696.4102,2448261.121199999],[12363703.5004,2448262.914099999],[12363713.4806,2448261.9069],[12363719.451000001,2448260.274099998],[12363724.2518,2448257.3456999995],[12363727.280699998,2448251.327399999],[12363728.111499999,2448217.9869999997],[12363726.981600001,2448213.9059999995],[12363723.3162,2448210.5128000006],[12363718.013700001,2448207.4683],[12363712.909200002,2448206.6328000017],[12363705.2119,2448206.546],[12363699.072500002,2448207.8533999994],[12363691.4129,2448211.8013000004],[12363687.887400001,2448217.5802000016],[12363687.751699999,2448248.0447999984],[12363688.0568,2448251.8905999996],[12363689.846099999,2448256.1270000003],[12363696.4102,2448261.121199999]]],"spatialReference":{"wkid":102113,"latestWkid":3785}},"attributes":{"OBJECTID":21,"CGBH":"4#","GTRJ":"5000m³","CCHL":"航煤","SFWXP":"是","LJMTMC":"茂名石化码头","JYRMC":"茂名石油化工公司港口公司","SZGQ":"水东港","SFTYJYR":"是","GKWHJYZ":null,"AQJDBM":null,"MBBSM":"SDG_CG_SYHG_21","JCSJ":null,"BZ":null,"Shape_Length":166.29281375602937,"Shape_Area":2026.8537259266218},"symbol":{"color":[125,125,125,89],"outline":{"color":[255,0,0,255],"width":2.25,"type":"esriSLS","style":"esriSLSSolid"},"type":"esriSFS","style":"esriSFSSolid"}}'
然后叠加在地图上:
graphicslayer = new esri.layers.GraphicsLayer();
map.addLayer(graphicslayer); //将图层赋给地图

var graphic= new esri.Graphic(JSON.parse(plotGeo));
graphicslayer.add(graphic);

//plotGeo的json里面没有symbol样式的话,要自己定义一个符号样式了
var highlightSymbol = new esri.symbol.SimpleFillSymbol(
                        esri.symbol.SimpleFillSymbol.STYLE_SOLID,
     new esri.symbol.SimpleLineSymbol(
                           esri.symbol.SimpleLineSymbol.STYLE_SOLID,
                                new esri.Color([255, 0, 0]), 3
                        ),
                        new esri.Color([125, 125, 125, 0.35])
                );
graphic.setSymbol(highlightSymbol);

 

程杰

赞同来自:

graphic写错了

要回复问题请先登录注册