ArcGIS ClassBreaksRenderer с локальным JSON

Я пытался раскрасить полигоны на основе атрибутов с помощью ClassBreaksRenderer в ArcGIS JS API. Мой источник данных-это локальный файл json, который, как я подозреваю, является причиной того, что он не работает. Тестирование основано на примере, приведенном в документации:
https://developers.arcgis.com/javascript/3/jssamples/renderer_class_breaks.html
Где я могу заменить указатель FeatureLayer следующим образом:

оригинальный:

var featureLayer = new FeatureLayer("https://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/3", ...

Заместить:

var featureLayer = new FeatureLayer("./data/check.json", ...

Слой geojson визуализируется, и все атрибуты отображаются во всплывающем окне при щелчке полигонов, но я не могу применить к файлу какой-либо цвет, он просто визуализируется в полупрозрачном зеленом цвете по умолчанию. На самом деле, единственный способ, которым я могу получить цвет слоя json, чтобы изменить на всех, если я требую простой визуализации: esri/renderers/SimpleRenderer
затем настройте следующим образом, все еще следуя примеру ClassBreaksRenderer в противном случае:

var simpleJson = {
 "type": "simple",
 "label": "",
 "description": "",
 "symbol": {
     "color": [255,0,50,200],
     "style": "esriSFSSolid",
     "type": "esriSFS"
    }
}

featureLayer.renderer = new SimpleRenderer(simpleJson);

Мне интересно, поддерживает ли API локальный файл json, в этом случае я подумаю о переключении на листовку для этого проекта.

Спасибо, что посмотрели.

1 ответ

  1. Вы правы, вы не можете создать экземпляр FeatureLayer с uri для файла в вашей локальной файловой системе, это должен быть допустимый сервис REST в любом из допустимых форматов (ArcGIS REST, WMS и т.д.).

    Что вы можете сделать в своем сценарии, так это использовать коллекцию FeatureCollection, чтобы создать свой FeatureLayer и двигаться дальше.

    Взгляните на этот пример: https://developers.arcgis.com/javascript/3/jssamples/fl_featureCollection.html

    Дайте мне знать, если это поможет.