2016-08-25 2 views
3

이미지, JSON 문자열 및 코드 스 니펫을 아래에서 참조하면 코드, 콘솔 출력 및 다각형 (또는 실제로 모든 지오메트리/그래픽)을 그리려는 예상 동작을 간략히 설명합니다. ESRI ArcGIS Javascript API를 사용합니다. 무슨 일이 일어나고 있는지 잘 모르겠다 .... 도와주세요!ESRI ArcGIS Javascript : JSON의 다각형이 작동하지 않습니다.

JSON 문자열 :

{ "형상"{ "링"[[[- 91.89013671874848,38.03029444608522] [- 91.653930664061,38.00865683368494] [- 91.64843749999851,38.00432854459864] [- 91.5935058593735,37.93070854451552] [- 91.577026367186,37.88303274722063] [- 91.577026367186,37.79192956603227] [- 91.631958007811,37.73982010276601] [- 91.70886230468598,37.73547599031287] [- 91.763793945311,37.76587942393493] [- 91.85168457031098,37.85701474874939] [- 91.88464355468598,37.9956711998967] [ "color": [0,0,0,64], "outline": { "color": {0}, {0}, {0}, {2} [0,0,0,255], "너비": 1, "유형": "esriSLS", "스타일": "esriSLSSolid"}, "유형": "esriSFS", "스타일": "esriSFSSolid"}}

,451,515,

코드는 모양이지도에 추가합니다 : 그림과

function createFromJSON(JSONText){ 
     console.log("In Create Function"); 
     dojo.disconnect(handle); 

     var jsontext = JSON.parse(JSONText); 
     var polygon = new esri.geometry.Polygon(jsontext); 
     console.log("Here is the polygon object:"); 
     console.log(polygon); 
     console.log("Now drawing polygon"); 
     map.graphics.add(new Graphic(polygon, new SimpleFillSymbol())); 
     console.log("Polygon should be there"); 
    } 

enter image description here

+0

"작동하지 않는"인 훌륭한 묘사가 아닙니다. 또한 스크린 샷 대신 실제 게시물에 관련 코드를 추가하는 것을 고려해보십시오. ;-) –

답변

4

json으로 문자열 Graphic 객체가 아닌 구조입니다. 보시다시피, geometry & symbol이 포함되어 있습니다. Graphic에 전달하면 제대로 작동합니다.

map.graphics.add(new Graphic(jsontext)); 

또는 다각형을 원한다면 코드는 다음과 같아야합니다.

var polygon = new esri.geometry.Polygon(jsontext.geometry); 

또한 레거시와 AMD 스타일을 함께 사용하지 마십시오.

+0

완벽하게 작동합니다. 정말 고맙습니다!! – JBizz

0

T Kambi가 말했듯이, 문자열은 그래픽이 아니라 도형이지만, json과 esriGeometry간에 변환 할 때 몇 가지 아이디어를 보여 드리겠습니다.

이러한 방법 중 하나를 사용하여,esri.GeometryJSON 변환 할 수 있습니다 :

  • JsonUtils (esri/geometry/jsonUtils) 또는
  • esri.geometry.fromJson 방법. 여기

코드이다 : (JsonUtils 사용)

방법 ONE

require(
    ["esri/map", "esri/geometry/jsonUtils", "esri/config", "dojo/domReady!"], 
    function (Map, JsonUtils, esriConfig) { 

    var jsonGeometry = {"x":10,"y":20,"spatialReference":{"wkid":3857}}; 

    //Note: you should not use JsonUtils.fromJson(JSON.stringify(jsonGeometry)) 
    var geometry = JsonUtils.fromJson(jsonGeometry); 
    var graphic = new esri.Graphic(firstGeometry); 
}); 

METHOD TWO (사용 geometry.fromJson 법)

var jsonGeometry = {"x":10,"y":20,"spatialReference":{"wkid":3857}}; 
var geometry = esri.geometry.fromJson(jsonGeometry); 
var graphic = new esri.Graphic(geometry);