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.
Вы можете найти названия слоев, перейдя по ссылке, которую вы разместили
- https://www.mapbox.com/studio/styles/mapbox/light-v9/ там вы увидите красивую визуализацию идентификаторов слоев из Mapbox.
water
слой находится у дна стека слоев в стиле света Mapbox.
Вот слои с водой в "id
,
"id": "waterway-river-canal",
"id": "water shadow",
"id": "water",
"id": "waterway-label",
"id": "water-label",
Идентификатор вашего слоя можно узнать, открыв карту в Mapbox Studio. Если вы идете в View style details
(поле со стрелкой в верхнем правом углу левого окна, оно покажет все слои.