vue2 mapboxgl 添加一个marker并实现高亮闪烁效果的完整代码示例
时间: 2024-04-16 15:30:08 浏览: 307
以下是一个使用Vue 2和MapboxGL在地图上添加一个marker并实现高亮闪烁效果的完整代码示例:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue MapboxGL Marker Highlight Animation</title>
<style>
#map { height: 400px; }
.highlight-animation {
animation: highlight 1s infinite;
}
@keyframes highlight {
0% {
opacity: 1;
transform: scale(1);
}
50% {
opacity: 0.5;
transform: scale(1.5);
}
100% {
opacity: 1;
transform: scale(1);
}
}
</style>
</head>
<body>
<div id="app">
<div id="map"></div>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script src="https://api.mapbox.com/mapbox-gl-js/v2.5.1/mapbox-gl.js"></script>
<link href="https://api.mapbox.com/mapbox-gl-js/v2.5.1/mapbox-gl.css" rel="stylesheet">
<script>
Vue.config.productionTip = false;
new Vue({
el: '#app',
data() {
return {
map: null,
marker: null
};
},
mounted() {
this.initializeMap();
},
methods: {
initializeMap() {
mapboxgl.accessToken = 'YOUR_MAPBOX_ACCESS_TOKEN';
this.map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/streets-v11',
center: [lng, lat],
zoom: zoomLevel
});
this.addMarker();
},
addMarker() {
var lng = -122.4194; // 经度
var lat = 37.7749; // 纬度
this.marker = new mapboxgl.Marker({
element: this.createMarkerElement()
})
.setLngLat([lng, lat])
.addTo(this.map);
this.marker.getElement().classList.add('highlight-animation');
},
createMarkerElement() {
var el = document.createElement('div');
el.className = 'marker';
el.style.backgroundImage = 'url(https://example.com/your-marker-icon.png)'; // 替换为您自己的标记图标URL
el.style.width = '40px';
el.style.height = '40px';
el.style.backgroundRepeat = 'no-repeat';
el.style.backgroundSize = 'cover';
return el;
}
}
});
</script>
</body>
</html>
```
请确保将YOUR_MAPBOX_ACCESS_TOKEN替换为您自己的Mapbox访问令牌,并将`https://example.com/your-marker-icon.png`替换为您自己的标记图标的URL。
通过上述代码,您将能够使用Vue 2和MapboxGL在地图上添加一个marker,并为其添加高亮闪烁的动画效果。根据您的需求,您可以调整地图的样式、标记的位置和动画效果。
阅读全文