2015-11-09 99 views
0

我想一個L.geoJson函數中使用的樣式Mapbox簡約風格的語法我的標記顏色像這樣:Leaflet和Mapbox:使用L.geoJson設置mapbox標記的樣式?

L.geoJson(myData, { 
    pointToLayer: L.mapbox.marker.style, 
    style: function(feature){ 
     return { 'marker-color': '#ffcc00' } 
    } 
}); 

mapbox docs,你可以在L.geoJson使用L.mapbox.marker.style對於mapbox的默認標記,但我似乎無法弄清楚如何使用不同的顏色來設置它。

有一個similar question posted here但我不能讓它在我的客戶端代碼中工作。

有誰知道如何做到這一點?這是一個demo fiddle開始。

注意:我知道標記屬性可以添加到正在使用的實際數據中,但我需要能夠在客戶端代碼中設置標記樣式,因爲我無法訪問geoJson featureCollection

回答

1

由於您不能依賴GeoJSON數據已定義的樣式屬性,因此您只需在將每個特徵傳遞到L.mapbox.marker.style之前用自己的樣式「修補」它即可。

L.geoJson(myData, { 
    // Instead of passing directly L.mapbox.marker.style function, 
    // implement your own that will first "patch" the current feature 
    // with your desired styling properties. 
    pointToLayer: function (feature, latlng) { 
     feature.properties = { 
      "marker-size": "large", 
      "marker-color": "#cc0000" 
     }; 
     // Finally call L.mapbox.marker.style with the "patched" feature. 
     return L.mapbox.marker.style(feature, latlng); 
    } 
}); 

演示:http://jsfiddle.net/W763Z/6/

+0

謝謝,步驟在正確的方向。不幸的是,當您將onEachFunction選項添加到該功能時會發生一些情況。查看您更新的小提琴:http://jsfiddle.net/W763Z/7/ – redshift

+1

2問題:您從GeoJSON數據中刪除了一個逗號,該數據變得無效;如果您仍想訪問GeoJSON中定義的某些要素屬性,則應該**擴展** feature.properties對象而不是覆蓋它。演示:http://jsfiddle.net/W763Z/8/ – ghybs

+0

謝謝!很棒。 – redshift