версия mapbox-gl-js: 0.53.1
браузер: Google Chrome версии 73.0.3683.86 (официальная сборка) (64-разрядная версия) и Firefox66.0.2 (64-разрядная версия)
ОС: MacOS Mojave 10.14.4
Действия для запуска поведения
- Реализация mapbox в VueJSОдностраничное приложение
- Выбор объекта на маркере Выбранный объект вызывает событие щелчка с
this.currentMap.on('click', layerId, callbackFunc)
- callbackFunc запускает описанную ниже функцию для установки маркера на карте.Артефакты появляются только тогда, когда маркер установлен на карте, а не при событии щелчка
- Карта удаляется и слушатели уничтожаются, но при создании нового экземпляра mapbox все еще отображаются артефакты;только полная перезагрузка браузера очищает его до повторного нажатия на элемент
Элементы находятся на слое, созданном из определенного источника (ниже):
{
'type': 'FeatureCollection',
'features': [{
'type': 'Feature',
'geometry': {
'type': 'Point',
'coordinates': [X, Y]
},
'properties': o
}, ...]
}
и определенный слойниже:
{
'id': <layerId>,
'type': 'circle',
'source': <sourceId>,
'minzoom': <displayAtZoomLevel>,
'icon-allow-overlap': true,
'paint': {
// make circles larger as the user zooms from <displayAtZoomLevel> to z22
'circle-radius': {
'base': 2,
'stops': [[<displayAtZoomLevel>, 3], [22, 180]]
},
// https://docs.mapbox.com/mapbox-gl-js/style-spec/#expressions-match
'circle-color': '#fff',
'circle-stroke-width': 1,
'circle-stroke-color': '#204da2'
}
}
Ожидаемое поведение
Карта должна отображаться как обычно с маркером
Фактическое поведение
Карта показывает зашифрованные артефакты, особенно на дорогах и т. Д., Когда маркер карты добавляется с использованием следующего кода:
setMarker (markerContext, { lng, lat }, requestRouteCallback) {
let lngLat = [Number(lng), Number(lat)]
if (lngLat.length) {
const marker = new mapboxgl.Marker().setLngLat(lngLat).addTo(this.currentMap)
if (markerContext === 'start') {
if (this.startEndMarkers.start) {
this.startEndMarkers.start.remove()
}
this.startEndMarkers.start = marker
} else if (markerContext === 'end') {
if (this.startEndMarkers.end) {
this.startEndMarkers.end.remove()
}
this.startEndMarkers.end = marker
}
this.currentMap.flyTo({ center: lngLat, zoom: 12, curve: 2 })
}
}
Карта показывает это:
Первоначально опубликовав это на github Mapbox GL, можно было предположить, что карта рисует пунктирные дорожки на улицах.Я обнаружил, что это происходит, когда на карте происходит какое-то движение, например, панорамирование или масштабирование.Если я помещу маркер на карту, не вызывая никакого движения, артефакты не появятся.