【问题标题】:Leaflet polylines not working传单折线不起作用
【发布时间】:2015-11-25 20:36:49
【问题描述】:

我正在尝试在 Leaflet 中显示折线,但它似乎不起作用。我错过了什么还是......? p.s.坐标对包含相同的值,所以它应该产生线...

//this adds markers to the map, which works
var d = {};
d.coordinates = [[lat,lng],[lat,lng]]

var latLngs = d.coordinates.map(function (c) {
    var marker = L.marker(c).addTo(map);
    return {
        lat: c[0],
        lng: c[1]
    };
});

//This 'should' add polylines but doesn't ... 
var polyline = L.polyline(d.coordinates, { color: 'red', weight: 12 }).addTo(map);

我在上面的代码上尝试了各种变体,随着实例化/工厂方法的变化,例如:new L.polyline()L.polyline() 并尝试大写和小写 Polyline。我尝试传递 [double, double][L.LatLng, L.LatLng] 甚至 [{lat:lat,lng:lng}] 的数组,但似乎没有任何效果......我真的必须忽略一个简单的事情......

我正在使用 Leaflet 0.7。

编辑:

如 ghybs 的 jsFiddle 所示,它应该可以工作。我将代码更新为以下内容:

var firstpolyline = L.polyline(d.coordinates, {
    color: 'red',
    weight: 12
}).addTo(map);

我还在 jsFiddle 和我的解决方案中添加了相同的日志记录语句。

console.log(firstpolyline); //jsFiddle的折线

console.log(map);

console.log(d.coordinates);

那些产生这个(左边是自定义解决方案,显示一条线,右边是显示一条线的 jsFiddle)。手动将我的解决方案的不同坐标对复制粘贴到 jsFiddle 就可以了...:

我真的迷路了:(

【问题讨论】:

    标签: leaflet polyline


    【解决方案1】:

    没有理由在工厂L.polyline()之后添加额外的.polyline

    var polyline2 = L.polyline(d.coordinates, {color: 'red', weight: 12}).addTo(map);
    

    演示:http://jsfiddle.net/ve2huzxw/48/

    旁注:您应该使用单个等号 (=) 在 d.coordinates == [[lat,lng],[lat,lng]] 中进行赋值

    【讨论】:

    • 额外的.polyline 是复制/粘贴错字,= 符号位于 cmets 后面,只是为了反映 d.coordinates 的值实际上是什么样的,而不是任何赋值。无论如何,我看了你的例子,并用我的解决方案仔细检查了它。仍然没有运气,我更新了我的问题以显示我的发现......
    • 地图的其余部分是否正常工作?您可以添加其他图层类型吗? (例如标记)屏幕截图中的_tileLayersToLoad: NaN 很奇怪。
    • 是的,我可以加载标记(即使是从我用来创建线条的那些点),只是没有折线..
    • 如果我检查:polyline2._path.outerHTML 它的值是:<path stroke-linejoin="round" stroke-linecap="round" stroke="red" stroke-opacity="0.5" stroke-width="12" fill="none" class="leaflet-clickable" d="M505 69L509 89"></path>...
    猜你喜欢
    • 1970-01-01
    • 2013-04-30
    • 2020-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 2017-07-24
    相关资源
    最近更新 更多