Javascript 在地图盒/传单中设置线的样式
我使用Cartodb中的geojson在地图上画一条线。如何在这条线上设置一些样式?我不太熟悉javascript,所以请容忍我。 这是我的代码,包括我想要的样式:Javascript 在地图盒/传单中设置线的样式,javascript,map,leaflet,mapbox,geojson,Javascript,Map,Leaflet,Mapbox,Geojson,我使用Cartodb中的geojson在地图上画一条线。如何在这条线上设置一些样式?我不太熟悉javascript,所以请容忍我。 这是我的代码,包括我想要的样式: var mystyle = { "color": "#fff", "weight": 10, "opacity": 0.4 }; var linelayer = L.mapbox.featureLayer() .loadURL('http://aftonbladet2
var mystyle = {
"color": "#fff",
"weight": 10,
"opacity": 0.4
};
var linelayer = L.mapbox.featureLayer()
.loadURL('http://aftonbladet2.cartodb.com/api/v2/sql?format=GeoJSON&q=SELECT ST_MakeLine(CDB_LatLng(latitude, longitude) ORDER BY created_date DESC) as the_geom FROM instagram')
.addTo(map);
任何帮助都将不胜感激!
Martin为此,您必须使用
setStyle
。请看我为您制作的以下物品:
有关更多样式选项,请访问mapbox api@
下面是实际的代码片段:
var linelayer = L.mapbox.featureLayer();
linelayer.loadURL('http://aftonbladet2.cartodb.com/api/v2/sql?format=GeoJSON&q=SELECT ST_MakeLine(CDB_LatLng(latitude, longitude) ORDER BY created_date DESC) as the_geom FROM instagram');
linelayer.addTo(map);
/* Need to wait for geoJSON to finish loading */
setTimeout(function(){
linelayer.setStyle({color: '#f00', weight: 10, opacity: 0.4});
},1000);
在应用样式之前,您需要等待来自loadURL(…)
的geoJSON完成加载。你必须找到更好的方法
更新:您可以添加更多的代码,自己获取geoJSON。这会增加批量,但不需要使用不可预测的setTimeout
var linelayer = L.mapbox.featureLayer();
linelayer.addTo(map);
/* Fetch geoJSON manually and set styles in a predictable fashion */
$.ajax({
url: 'http://aftonbladet2.cartodb.com/api/v2/sql?format=GeoJSON&q=SELECT ST_MakeLine(CDB_LatLng(latitude, longitude) ORDER BY created_date DESC) as the_geom FROM instagram',
datatype: 'jsonp',
success: function(data){
linelayer.setGeoJSON(data);
linelayer.setStyle({color: '#f00', weight: 10, opacity: 0.4});
}
});
还是不敢相信mapbox不接受这样的异步操作回调 这里有一些与前面答案不同的语法:
var linelayer = L.mapbox.featureLayer();
linelayer.addTo(map);
$.getJSON( 'http://aftonbladet2.cartodb.com/api/v2/sql?format=GeoJSON&q=SELECT ST_MakeLine(CDB_LatLng(latitude, longitude) ORDER BY created_date DESC) as the_geom FROM instagram',
function (data) {
linelayer.setGeoJSON(data);
linelayer.setStyle({color: '#f00', weight: 4, opacity: 0.4});
}).fail(function( jqxhr, textStatus, error ) {
var err = textStatus + ", " + error;
//console.log( "Request Failed: " + err );
});
请在您的答案中张贴任何相关代码。若Plunkr因为任何原因而失败,你们的答案对未来毫无用处visitors@Bojangles公平的enough@Akash非常好!谢谢