рисовать гео Json на карте mapbox - PullRequest
0 голосов
/ 10 марта 2020

Есть ли другой способ добавить полигон geo JSON на карту, используя mapbox sdk 9.0 stable на android?

У меня есть следующее, но я не уверен, что это правильно:

GeoJsonSource source = new GeoJsonSource("geojson", geoJsonString); 
mapboxMap.addSource(source); 
mapboxMap.addLayer(new LineLayer("geojson", "geojson"));

Ответы [ 2 ]

1 голос
/ 10 марта 2020

В этом примере из документации Mapbox показано, как добавить полигон Geo JSON на карту с помощью SDK Mapbox Maps для Android. Соответствующий код находится в обратном вызове onMapReady, извлеченном ниже (я пропустил код, связанный с добавлением прослушивателя щелчков, поскольку он не относится к вашему вопросу);

@Override
public void onStyleLoaded(@NonNull Style style) {

  // Add the GeoJSON as a source to the map.
  addGeoJsonSourceToMap(style);

  // Create FillLayer with GeoJSON source and add the FillLayer to the map.
  if (style != null) {
    style.addLayer(new FillLayer(geoJsonLayerId, geoJsonSourceId)
         .withProperties(fillOpacity(0.5f)));
  }
}

Вспомогательный метод addGeoJsonSourceToMap в этом примере загружает Geo JSON из внешнего URI, но в вашем случае первые две строки предоставленного вами фрагмента кода заменят вызов addGeoJsonSourceToMap(style);.

A FillLayer используется вместо LineLayer с тех пор, согласно связанной справочной документации по API :

FillLayer:

Заполненный многоугольник с необязательной штриховой рамкой.

LineLayer:

Штриховая линия.

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

1. Попробуйте добавить источник:

// WARDS – 2020 – SOURCE
// url = 'https://opendata.arcgis.com/datasets/845bbfdb73944694b3b81c5636be46b5_0.geojson';
map.addSource(
  'ward-source', {
    type: 'geojson',
    data: 'Wards.geojson'
  }
);

2. и слои:

// WARDS FILL
map.addLayer({
  'id': 'wards-fill',
  'type': 'fill',
  'source': 'wards-source',
  'layout': {},
  'paint': {
    'fill-color': '#627BC1',
    'fill-opacity': [
      'case',
      ['boolean', ['feature-state', 'hover'], false],
      1,
      0.5
    ]
  }
});
...