gpt4 book ai didi

javascript - Mapbox.js : Clear a custom legend?

转载 作者:行者123 更新时间:2023-12-03 09:52:36 28 4
gpt4 key购买 nike

我正在将 Mapbox.js 与 browserify 一起使用。我想创建一个模块,如果 map 尚不存在,则创建该 map ,如果存在则更新它。

我几乎已经完成了所有工作,但我在更新自定义图例时遇到问题。我似乎只能附加它,而无法清除它。

这是我的代码:

var analyseMap = {
setUpMap: function(options) {
var _this = this;
L.mapbox.accessToken = 'mytoken';
if (typeof this.map === 'undefined') {
this.map = L.mapbox.map('map', 'mapbox.streets').setView([53.1, -2.2], 6);
this.layerGroup = L.layerGroup().addTo(this.map);
} else {
this.layerGroup.clearLayers();
}
var geojson_url = "/api/1.0/myurlbasedonoptions";
$.getJSON(geojson_url, function(boundaries) {
var orgLayer = L.geoJson(boundariesWithData, { style: getStyle });
_this.layerGroup.addLayer(orgLayer);
_this.map.fitBounds(orgLayer.getBounds());
var popup = new L.Popup({ autoPan: false });

var legendHtml = _this.getLegendHTML(options);
_this.map.legendControl.removeLegend();
_this.map.legendControl.addLegend(legendHtml);

然后我从另一个模块调用它,如下所示:

// on initialise and update
map.setUpMap(someOptions);

我第一次调用它时效果非常好。然而,在更新时, map 更新和图层更新得很好,但我最终得到了两个图例。

如何在添加新图例之前清除现有图例?

documentation表明我需要知道图例 HTML 的值才能将其删除,这看起来很奇怪。

最佳答案

好的,我通过这样做修复了它:

if (typeof _this.legendHtml !== 'undefined') {
_this.map.legendControl.removeLegend(_this.legendHtml);
}
_this.legendHtml = _this.getLegendHTML(_this.quintiles, options);
_this.map.legendControl.addLegend(_this.legendHtml);

仍然有兴趣看看是否有人有更优雅的解决方案!

关于javascript - Mapbox.js : Clear a custom legend?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30845279/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com