Анимированный маркер с Mapbox GL JS

Я хотел бы анимировать (имея анимированный gif или последовательность png) маркер с помощью mapbox gl js.

У кого-нибудь есть ссылка/документ/ресурс, говорящий об этом? Я не могу найти ничего, кроме анимации маркеров вдоль линий.

заранее спасибо


person user3316068    schedule 13.06.2017    source источник
comment
Возможно, вы могли бы использовать видео вместо анимированного маркера. mapbox.com/mapbox-gl-js/api/#videosource   -  person Steve Bennett    schedule 14.06.2017
comment
ты просто добавляешь гифку в маркер? - т.е. используя тег изображения для рендеринга файла gif? -   -  person Denis Tsoi    schedule 14.06.2017


Ответы (1)


Конечно, вы можете использовать этот пример и создать его вариации в зависимости от ваших потребностей.

Например, используйте следующий код для отображения маркера gif:

mapboxgl.accessToken = '<api key>';
var map = new mapboxgl.Map({
  container: 'map',
  style: 'mapbox://styles/mapbox/streets-v9',
  center: [-74.50, 40],
  zoom: 9
});

function addeMarkerToMap(map, coordinates) {
  // create a DOM element for the marker
  var el = document.createElement('div');
  el.className = 'marker';

  // add marker to map
  new mapboxgl.Marker(el)
    .setLngLat(coordinates)
    .addTo(map);
}

addeMarkerToMap(map, [-74.5, 40]);
body {
  margin: 0;
  padding: 0;
}

#map {
  position: absolute;
  top: 0;
  bottom: 0;
  width: 100%;
}

.marker {
  background-image: url(https://media.giphy.com/media/Bfa45K0r6cCIw/giphy.gif);
  width: 32px;
  height: 32px;
}
<script src='https://api.tiles.mapbox.com/mapbox-gl-js/v0.51.0/mapbox-gl.js'></script>
<link href='https://api.tiles.mapbox.com/mapbox-gl-js/v0.51.0/mapbox-gl.css' rel='stylesheet' />

<div id='map' class="myMap"></div>

PS: замените <api key> вашим фактическим ключом API, чтобы запустить пример кода без предупреждения авторизации.

person Dipen Shah    schedule 27.11.2018
comment
Есть ли более эффективное решение, чем элемент html dom? Я предполагаю, что это сильно замедлит работу, если превысит отметку >100. - person nauti; 28.11.2018
comment
@nauti Мне придется покопаться в документах, чтобы узнать, но вы можете получить прирост производительности, переместив стиль с javascript на css и просто добавив класс в добавленный тег div. - person Dipen Shah; 28.11.2018
comment
@nauti Проверьте мой обновленный код и используйте его при создании нового маркера. Я не мог найти ничего другого в документации. Создание нового элемента с новым маркером не сильно повлияет на производительность. - person Dipen Shah; 30.11.2018
comment
Хороший пример! Однако на самом деле изображение не указывает на заданную широту/долготу. Как вы можете изменить привязку, если вы хотите, чтобы центр/нижняя часть вашего маркера указывали на местоположение? - person Emixam23; 14.11.2019