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

我使用Cartodb中的geojson在地图上画一条线。如何在这条线上设置一些样式?我不太熟悉javascript,所以请容忍我。 这是我的代码,包括我想要的样式:

    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非常好!谢谢