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