Mapbox - Какие у меня идентификаторы слоя?

Я новичок в использовании Mapbox.

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

map.addLayer({
    'id': 'maine',
    'type': 'fill',
    'source': 'maine',
    'layout': {},
    'paint': {
        'fill-color': '#088',
        'fill-opacity': 0.8
    }
}, 'water');

(Этот код был взят из некоторого примера кода из Mapbox.)

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

Это таблица стилей, которую я использую:

mapbox://styles/mapbox/light-v9

Как мне найти другие действительные идентификаторы слоя для этой таблицы стилей? Я пробовал "улицы", "дороги", "дороги", "земли" и т. Д., Но ничего не помогло. Я думал, что эта ссылка включает в себя все имена слоев:

https://www.mapbox.com/studio/styles/mapbox/light-v9/

но единственное, что мешает моему новому слою быть сверху всего, это "вода". Помогите!

3 ответа

Вы можете получить спецификации стилей из API стилей .

Например, чтобы получить все layer_id в стиле light-v10, вы можете сделать это в python:

      import requests    
for layer in requests.get('https://api.mapbox.com/styles/v1/mapbox/light-v10?access_token=pk.eyJ1IjoiYmNrb2hhbiIsImEiOiJja2Zvamc4ejcyZjRxMzFwMXNwcGIxdDVlIn0.KdUOuJFIaV4eCzq94AgMGw').json()['layers']: print(layer['id'])

Который дает:

      land
landcover
national-park
landuse
water-shadow
waterway
water
hillshade
land-structure-polygon
land-structure-line
aeroway-polygon
aeroway-line
building-outline
building
tunnel-street-minor-low
tunnel-street-minor-case
tunnel-primary-secondary-tertiary-case
tunnel-major-link-case
tunnel-motorway-trunk-case
tunnel-construction
tunnel-path
tunnel-steps
tunnel-major-link
tunnel-pedestrian
tunnel-street-minor
tunnel-primary-secondary-tertiary
tunnel-motorway-trunk
road-pedestrian-case
road-minor-low
road-street-low
road-minor-case
road-street-case
road-secondary-tertiary-case
road-primary-case
road-major-link-case
road-motorway-trunk-case
road-construction
road-path
road-steps
road-major-link
road-pedestrian
road-minor
road-street
road-secondary-tertiary
road-primary
road-motorway-trunk
road-rail
bridge-pedestrian-case
bridge-street-minor-low
bridge-street-minor-case
bridge-primary-secondary-tertiary-case
bridge-major-link-case
bridge-motorway-trunk-case
bridge-construction
bridge-path
bridge-steps
bridge-major-link
bridge-pedestrian
bridge-street-minor
bridge-primary-secondary-tertiary
bridge-motorway-trunk
bridge-rail
bridge-major-link-2-case
bridge-motorway-trunk-2-case
bridge-major-link-2
bridge-motorway-trunk-2
admin-1-boundary-bg
admin-0-boundary-bg
admin-1-boundary
admin-0-boundary
admin-0-boundary-disputed
road-label
waterway-label
natural-line-label
natural-point-label
water-line-label
water-point-label
poi-label
airport-label
settlement-subdivision-label
settlement-label
state-label
country-label

Я бы просто добавил предупреждение о том, что идентификаторы слоев для стилей по умолчанию могут значительно меняться от версии к версии.

Вы можете поэкспериментировать в Mapbox.com/studio, добавив maine плитка в новом стиле, затем вы можете перемещать слой в интерактивном режиме, чтобы поэкспериментировать и проверить желаемый эффект.

Второй параметр для addLayer является before, Так что ваши maine источник должен был уйти до water слой. Смотрите документы на addLayer для деталей

https://www.mapbox.com/mapbox-gl-js/api/


Названия слоев обозначены "id" в Style.json.

Вы можете найти названия слоев, перейдя по ссылке, которую вы разместили

water слой находится у дна стека слоев в стиле света Mapbox.

Вот слои с водой в "id,

        "id": "waterway-river-canal",
        "id": "water shadow",
        "id": "water",
        "id": "waterway-label",
        "id": "water-label",

Идентификатор вашего слоя можно узнать, открыв карту в Mapbox Studio. Если вы идете в View style details (поле со стрелкой в ​​верхнем правом углу левого окна, оно покажет все слои.

Другие вопросы по тегам