我在我的项目中使用mapbox
我使用mapbox.js并使用如下自定义标记制作Map
$(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的速记方法来改变它?
3条答案
按热度按时间zzlelutf1#
要详细说明给出的两条注解,有两种不同的方法可以将自定义图像添加到Map中:
使用符号层
符号层存在于Map中,可用于可视化数据源。
首先,使用
loadImage()
获取图片URL:然后,使用
addImage()
将获取的图像转换为用于Map的图标:最后,在图层上使用该图标:
完整示例:https://www.mapbox.com/mapbox-gl-js/example/add-image/
使用标记
或者,您可以使用标记。它位于Map上方,不与Map中的数据交互。
首先,为图片创建DOM元素:
接下来,基于此元素创建一个Marker对象,并将其添加到map中:
完整示例:https://www.mapbox.com/mapbox-gl-js/example/custom-marker-icons/
7fyelxc52#
我强烈建议通过以下方式解决此问题:
首先创建元素来替换旧的标记:
然后创建一个标记对象,参数为一个选项对象,属性如下:
因为,如果你用其他方式解决这个问题,标记将几乎随机地放置在你的Map上,这将使ux看起来很糟糕
我的解决方案示例:
其他解决方案示例:
有关更多详细信息,请查看文档的这一部分:Docs
xn1cxnb43#
你可以很容易地这样使用。这段代码是从mapbox网站找到的
customMarker函数是
Finaly use可以使用这样的一些样式
希望这段代码能对你有所帮助。快乐编码