добавить несколько источников geo JSON с mapbox GL Js - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь добавить другой источник с новым слоем на карту с типом geo JSON на карте (mapbox).

Я получаю сообщение об ошибке

Ошибка: уже существует источник с этим идентификатором

Как добавить еще один геоисточник в машинописный текст с новым map.addSource помимо существующего геоисточника?

Первый геоисточник:

          map.addSource("polygon", create(coordinates, 0.5, 64));
          map.addLayer({
            "id": "polygon",
            "type": "fill",
            "source": "polygon",
            "layout": {},
            "paint": {
              'fill-color': {
                type: 'identity',
                property: 'color',
              },
              'fill-outline-color': 'rgba(200, 100, 240, 1)',
              "fill-opacity": 0.090
            }
          });

в методе:

    return {
      "type": "geojson",
      "data": {
        "type": "FeatureCollection",
        "features": [{
          "type": "Feature",
          "geometry": {
            "type": "Polygon",
            "coordinates": [ret]
          }
        }]
      }
    };

второй источник:

          map.addSource('places', {
            'type': 'geojson',
            'data': activitiesPlaces
          });

       var activitiesPlaces = {
        'type': 'FeatureCollection',
        'features': [
          {
            'type': 'Feature',
            'properties': {
              'name': valuesName
            },
            'geometry': {
              'type': 'Point',
              'coordinates':
                valuesLon,
              valuesLat
            }
          }
        ]
      };

вызов этого источника выдает мне сообщение об ошибке

Ответы [ 2 ]

1 голос
/ 20 апреля 2020

Первый аргумент метода Map#addSource указывает идентификатор источника для конкретного источника. Каждый идентификатор источника в стиле карты должен быть уникальным, как указано в справочнике API здесь :

Параметры

id (строка) Идентификатор источника для добавления. Не должен конфликтовать с существующими источниками.

Таким образом, указание уникальных идентификаторов источников для каждого источника, добавленного на карту, устранит ошибку.

0 голосов
/ 20 апреля 2020

Вместо добавления нескольких источников, попробуйте добавить несколько слоев.

    map.addLayer({
            id: 'features-fill',
            type: 'fill',
            source: 'features',
            paint: {'fill-color': 'red', 'fill-opacity': 0.6}
        });

    map.addLayer({
            id: 'features-fill-1',
            type: 'fill',
            source: 'features',
            paint: {'fill-color': 'blue', 'fill-opacity': 0.8}
        });

ОБНОВЛЕНИЕ:

map.once('load', function loaded() {
    map.batch(function batch() {
        features.forEach(function eachFilter(feature, index) {
            var id = 'feature-' + index;
            map.addSource(id, {type: 'geojson', data: feature});
            map.addLayer({
                id: id + '-fill',
                type: 'fill',
                source: id,
                paint: {'fill-color': 'red', 'fill-opacity': 0.6}
            });
        });
    });
});

Проверьте эту проблему: https://github.com/mapbox/mapbox-gl-js/issues/1484

...