8

我开始失去理智了。

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

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

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

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

对我搞砸的地方有什么建议吗?

4

5 回答 5

6

拧 jQuery

setMarkerColor(marker, color) {
      let markerElement = marker.getElement();
      markerElement
        .querySelectorAll('svg g[fill="' + marker._color + '"]')[0]
        .setAttribute("fill", color);
      marker._color = color;
    },
于 2021-02-05T17:52:24.400 回答
4

使用默认 Marker SVG 元素时支持自定义颜色,因为v0.45.0您正在使用v0.44.2.

发行说明:

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

于 2018-06-17T21:25:43.077 回答
4

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

function setMarkerColor(marker, color) {
    var $elem = jQuery(marker.getElement());
    $elem.find('svg g[fill="' + marker._color + '"]').attr('fill', color);
    marker._color = color;
}
于 2018-12-10T09:17:49.877 回答
0
marker = new mapboxgl.Marker({
        color: $parameters.UpdatedMarkerColor,
        draggable: false
    });
于 2021-11-12T11:46:08.000 回答
0

设置标记时,将颜色放在括号中:

new mapboxgl.Marker({ "color": "#b40219" }) //this changes color to a dark red// .setLngLat([-74.5, 40]) .addTo(map);

于 2022-02-03T17:40:21.700 回答