Чтобы объяснить два приведенных комментария, есть два разных способа добавления пользовательских изображений на карту:
Использование слоев символов
Слой символов существует на карте и может использоватьсядля визуализации источника данных.
Сначала используйте loadImage()
для извлечения URL-адреса изображения:
map.loadImage('https://example.com/image.png', function(error, image) {
if (error) throw error;
Затем используйте addImage()
, чтобы преобразовать извлеченное изображение в значок для использования вкарта:
map.addImage('pin', image);
Наконец, используйте этот значок на слое:
map.addLayer({ id: 'mypin', type: 'symbol', paint: { 'icon-image': 'pin' });
Полный пример: https://www.mapbox.com/mapbox-gl-js/example/add-image/
Использование маркеров
Кроме того, вы можете использовать маркер.Он существует над картой и не взаимодействует с данными в нем.
Сначала создайте элемент DOM для изображения:
var el = document.createElement('div');
el.className = 'marker';
el.style.backgroundImage = 'url(https://example.com/icon.png)';
el.style.width = '20px';
el.style.height = '20px';
Затем создайте объект Marker на основе этогоэлемент и добавьте его на карту:
new mapboxgl.Marker(el)
.setLngLat(mylatlng)
.addTo(map);
Полный пример: https://www.mapbox.com/mapbox-gl-js/example/custom-marker-icons/