ESRI ArcGIS Javascript: полигон из JSON не работает

Если вы ссылаетесь на изображение, строку JSON и фрагменты кода ниже, в нем описывается код, вывод консоли и ожидаемое поведение при попытке нарисовать многоугольник (или любую другую геометрию / графику) с помощью API-интерфейса ESRI ArcGIS Javascript. Не уверен, что происходит.... помогите, пожалуйста!

JSON String:

{ "геометрия":{"кольцо": [[[- 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],[-91.89013671874848,38.03029444608522]]],"spatialReference":{"wkid":4326}}," символ ": {" цвет ": [0,0,0,64]," контур ": {" цвет ": [0,0,0,255]," ширина": 1, "Тип":"esriSLS","стиль":"esriSLSSolid"},"типа":"esriSFS","стиль":"esriSFSSolid"}}

Код для добавления формы на карту:

    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");
    }

введите описание изображения здесь

2 ответа

Решение

Строка JSON, показанная на изображении, предназначена для Graphic объект, а не геометрия. Как вы можете видеть, он содержит geometry & symbol, Если вы передадите его в графический, он будет работать.

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

Или, если вы просто хотите многоугольник, тогда ваш код должен быть примерно таким.

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

Кроме того, не комбинируйте старый стиль и стиль AMD вместе.

Как сказал T Kambi, ваша строка предназначена для графики, а не для геометрии, но я собираюсь показать некоторые идеи по конвертации между json и esriGeometry.

Вы можете конвертировать JSON в esri.Geometry, используя любой из этих способов:

  • JsonUtils (esri/geometry/jsonUtils) или же
  • esri.geometry.fromJson метод.

Вот код:

МЕТОД ОДИН (ИСПОЛЬЗОВАНИЕ JsonUtils )

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);
});

МЕТОД ВТОРОЙ (Использование geometry.fromJson метод)

var jsonGeometry = {"x":10,"y":20,"spatialReference":{"wkid":3857}};
var geometry = esri.geometry.fromJson(jsonGeometry);
var graphic = new esri.Graphic(geometry);
Другие вопросы по тегам