Mapbox GL JS更改默认标记的颜色

时间:2018-06-17 18:39:20

标签: mapbox mapbox-gl-js mapbox-marker

我开始放松心情了。

根据Mapbox API我应该可以更改默认标记颜色,但我没有在文档中找到任何不使用自定义标记的例子,最可能的语法不起作用。

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

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

使用此代码,地图显示时没有标记,如果我删除颜色选项,标记会正确显示,但颜色错误。

有什么建议我搞砸了?

3 个答案:

答案 0 :(得分:3)

螺丝 jQuery

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

答案 1 :(得分:1)

使用默认标记SVG元素时支持自定义颜色自v0.45.0起可用,您正在使用v0.44.2

发行说明:

https://github.com/mapbox/mapbox-gl-js/releases

答案 2 :(得分:0)

如果您需要即时更改默认标记的颜色,则可以使用这种功能(使用jQuery来获取元素的子代):

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