2
我嘗試加載geoJson,然後對這些pois應用過濾器。每個標記都有一個自定義彈出框 在每個標記上綁定自定義彈出窗口都可以正常工作,直到我調用我的featureLayer上的setFilter()。 基本上我的代碼看起來像這樣來自URL和setFilter()的GeoJSON標記,然後沒有更多的自定義彈出
var map;
var featureLayer;
function initMap(mapInfos){
var southWest = L.latLng(mapInfos.sw.lat, mapInfos.sw.lng),
northEast = L.latLng(mapInfos.ne.lat, mapInfos.ne.lng),
bounds = L.latLngBounds(southWest, northEast);
map = L.mapbox
.map('map', 'oxyde.xxxxxx', {'maxBounds' : bounds})
.setView([mapInfos.center.lat, mapInfos.center.lng], mapInfos.defaultZoom);
featureLayer = L.mapbox.featureLayer().loadURL('/pois').addTo(map);
featureLayer.on('ready', setContentToAllPois);
return mapInfos;
}
function setContentToAllPois(){
var promises = new Array();
featureLayer.eachLayer(function(layer) {
promises.push(setContentToPoi(layer));
});
$.when.apply($.when.apply, promises)
.done(doneLoadingPois)
.fail(logError);
}
function setContentToPoi(layer){
var dfd = new jQuery.Deferred(),
poi = layer.feature.properties.poi;
$.get('/poi/' + poi._id + '/content')
.done(function(content){
layer.bindPopup(content);
dfd.resolve(layer);
})
.fail(function(e){
dfd.reject(e);
});
return dfd.promise();
function doneLoadingPois(){
featureLayer.setFilter(function(feature) {
return true;
})
}
如果我評論在doneLoadingPois的彈出窗口顯示細膩使用setfilter(...)線。 1-我在這裏錯過了什麼? 2-爲什麼我必須使用featureLayer var? (使用map.featureLayer不工作,它似乎不是同一個對象)
謝謝!
對我而言,我不清楚哪些對象必須使用.on('layeradd')事件? –
你有沒有得到答案?我有完全一樣的問題。 –
對不起,我不再在這個項目上工作。我不記得我使用了哪種解決方法... –