我在项目中使用mapbox
我使用的是mapbox.js 并使用像这样的自定义标记制作我的地图
$(function() {
const token = '*********';
let myLatlng = L.latLng(<%= @hotel.lat %>,<%= @hotel.lng %>);
L.mapbox.accessToken = token;
let map = L.mapbox.map('map-canvas', 'mapbox.streets')
.setView(myLatlng, 14);
let marker = new L.marker(myLatlng,{
icon: L.icon({
iconUrl: '//chart.googleapis.com/chart?chst=d_map_pin_icon&chld=home|EBCB2D'
})
}).addTo(map);
});
我正在改变这样的标记图标
icon: L.icon({
iconUrl: '//chart.googleapis.com/chart?chst=d_map_pin_icon&chld=home|EBCB2D'
})
我想知道MapBox GL JS是否有像rhis这样的简写方法来改变它?
答案 0 :(得分:0)
要说明给出的两条评论,有两种不同的方法可以将自定义图像添加到地图中:
地图中存在符号图层,可用于显示数据源。
首先,使用loadImage()
获取图片网址:
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/