Mapbox GL JS如何将默认标记的颜色更改?

10

我开始变得有些疯狂了。

根据 Mapbox API ,我应该能够更改默认标记颜色,但是在文档中我没有找到任何不使用自定义标记的示例,而最可能的语法也无效。

我正在使用 mapbox-gl-js/v0.44.2

var marker = new mapboxgl.Marker({ "color": "#b40219" })
                .setLngLat([0, 0])
                .addTo(map);

使用此代码时,地图显示没有标记,如果我删除颜色选项,则标记会正确显示但颜色不对。有什么建议可以帮忙找出问题所在吗?
5个回答

8

抛弃jQuery

setMarkerColor(marker, color) {
      let markerElement = marker.getElement();
      markerElement
        .querySelectorAll('svg g[fill="' + marker._color + '"]')[0]
        .setAttribute("fill", color);
      marker._color = color;
    },

这段代码会在之前的颜色为#000000时改变标记阴影的颜色:https://i.stack.imgur.com/3pILu.png - Pavel Chuchuva

6

5
语法正确,const marker = new mapboxgl.Marker({ "color": "#b40219" }) - Mark Swardstrom

4

如果您需要动态更改默认标记的颜色,可以使用以下函数(使用jQuery获取元素的子元素):

function setMarkerColor(marker, color) {
    var $elem = jQuery(marker.getElement());
    $elem.find('svg g[fill="' + marker._color + '"]').attr('fill', color);
    marker._color = color;
}

我刚刚复制粘贴了它,它完美地工作了。谢谢。 - sugaith

1
设置标记时,将颜色放在括号中:
new mapboxgl.Marker({ "color": "#b40219" }) //这会将颜色更改为深红// .setLngLat([-74.5, 40]) .addTo(map);

0
marker = new mapboxgl.Marker({
        color: $parameters.UpdatedMarkerColor,
        draggable: false
    });

请考虑添加一个简短的解释,说明如何以及为什么这个解决方案能够解决问题。这将有助于读者更好地理解您的解决方案。 - tdy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接