【问题标题】:ESRI ArcGIS Javascript : Polygon from JSON not workingESRI ArcGIS Javascript:来自 JSON 的多边形不起作用
【发布时间】:2017-01-01 23:13:09
【问题描述】:

如果您引用下面的图像、JSON 字符串和代码 sn-ps,它概述了尝试使用 ESRI ArcGIS Javascript API 绘制多边形(或实际上是任何几何图形/图形)的代码、控制台输出和预期行为。不知道发生了什么……请帮忙!

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

【问题讨论】:

  • “不工作”不是一个很好的描述。此外,考虑将相关代码添加到实际帖子中,而不仅仅是屏幕截图。 ;-)

标签: javascript json arcgis esri esri-javascript-api


【解决方案1】:

图像中显示的 JSON 字符串用于 Graphic 对象,而不是几何图形。如您所见,它包含geometrysymbol,如果您将其传递给Graphic 它将起作用。

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

或者如果你只想要多边形,那么你的代码应该是这样的。

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

另外,不要将传统风格和 AMD 风格结合在一起。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2020-12-31
      • 2017-11-10
      • 2018-10-08
      • 1970-01-01
      • 2019-03-24
      • 2022-07-08
      • 2015-03-17
      • 2017-06-25
      • 2012-08-25
      相关资源
      最近更新 更多