Я использую Mapbox.js с браузером. Я хочу создать модуль, который создает карту, если она еще не существует, но обновляет ее, если это произойдет.Mapbox.js: очистить пользовательскую легенду?
У меня есть почти все пути, но у меня проблемы с обновлением пользовательской легенды. Я только, кажется, могу добавить к нему и не могу его очистить.
Это мой код:
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);
Это работает только большой первый раз, когда я называю его. Тем не менее, при обновлении обновления карт и уровни обновляются красиво, но я получаю две легенды.
Как очистить существующую легенду перед добавлением новой?
documentation предполагает, что мне нужно знать значение легенды HTML, чтобы удалить его, что кажется странным.
Я думал, что это может быть полезно, но похоже, что ваш подход более надежный. '_this.map.legendControl.removeFrom (_this.map);' –