ESRI ArcGIS JavaScript:无法从JSON创建多边形

3
如果您参考下面的图像、JSON字符串和代码片段,它概述了使用ESRI ArcGIS Javascript API绘制多边形(或任何几何/图形)时的代码、控制台输出和预期行为。不确定发生了什么……请帮帮我!
JSON字符串:
{"geometry":{"rings":[[[-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}},"symbol":{"color":[0,0,0,64],"outline":{"color":[0,0,0,255],"width":1,"type":"esriSLS","style":"esriSLSSolid"},"type":"esriSFS","style":"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");
    }

enter image description here


“Not working”不是一个很好的描述。此外,请考虑在实际帖子中添加相关代码,而不仅仅是截图。;-) - Dylan Meeus
2个回答

4
图中显示的JSON字符串是针对Graphic对象而不是几何体的。正如您所看到的,它包含geometrysymbol,如果将其传递给Graphic,它将起作用。
map.graphics.add(new Graphic(jsontext));

如果你只想要多边形,则你的代码应该像这样。

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

同时,请不要混合使用传统和AMD风格。

0

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接