mapbox-gl.js实现定位打点功能
时间: 2023-09-06 22:10:00 浏览: 208
要使用Mapbox GL JS实现定位打点功能,你需要遵循以下步骤:
1. 创建一个具有定位权限的地图:
```javascript
mapboxgl.accessToken = 'YOUR_ACCESS_TOKEN';
var map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/streets-v11',
center: [lng, lat], // 设置地图中心点经纬度
zoom: 12 // 设置地图缩放级别
});
// 获取地理位置信息并更新地图中心点
navigator.geolocation.getCurrentPosition(function(position) {
var lng = position.coords.longitude;
var lat = position.coords.latitude;
map.setCenter([lng, lat]);
});
```
2. 添加定位点:
```javascript
var el = document.createElement('div');
el.className = 'marker';
// 创建一个Marker对象并添加到地图中
new mapboxgl.Marker(el)
.setLngLat([lng, lat])
.addTo(map);
```
3. 样式化定位点:
```css
.marker {
background-image: url('https://docs.mapbox.com/help/demos/custom-markers-gl-js/mapbox-icon.png');
background-size: cover;
width: 50px;
height: 50px;
border-radius: 50%;
cursor: pointer;
}
```
4. 完整代码示例:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8' />
<title>Mapbox GL JS - Add geolocate control</title>
<meta name='viewport' content='initial-scale=1,maximum-scale=1,user-scalable=no' />
<script src='https://api.mapbox.com/mapbox-gl-js/v2.3.1/mapbox-gl.js'></script>
<link href='https://api.mapbox.com/mapbox-gl-js/v2.3.1/mapbox-gl.css' rel='stylesheet' />
<style>
body { margin: 0; padding: 0; }
#map { position: absolute; top: 0; bottom: 0; width: 100%; }
.marker {
background-image: url('https://docs.mapbox.com/help/demos/custom-markers-gl-js/mapbox-icon.png');
background-size: cover;
width: 50px;
height: 50px;
border-radius: 50%;
cursor: pointer;
}
</style>
</head>
<body>
<div id='map'></div>
<script>
mapboxgl.accessToken = 'YOUR_ACCESS_TOKEN';
var map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/streets-v11',
center: [0, 0], // 设置地图中心点经纬度
zoom: 12 // 设置地图缩放级别
});
// 获取地理位置信息并更新地图中心点
navigator.geolocation.getCurrentPosition(function(position) {
var lng = position.coords.longitude;
var lat = position.coords.latitude;
map.setCenter([lng, lat]);
// 创建定位点
var el = document.createElement('div');
el.className = 'marker';
new mapboxgl.Marker(el)
.setLngLat([lng, lat])
.addTo(map);
});
</script>
</body>
</html>
```
这个示例代码会在地图上显示一个定位点,该点的位置是根据用户的当前位置动态确定的。
阅读全文