【问题标题】:How do I draw a polyline in Leaflet using pixel coordinates?如何使用像素坐标在 Leaflet 中绘制折线?
【发布时间】:2019-11-13 14:54:32
【问题描述】:

我的地图已设置好,标记也已到位,并且运行良好。我现在想在标记之间添加线条;所以我使用了 Leaflet 中的代码示例,并从几个标记中添加了坐标,但地图上没有显示这条线。

var polylinePoints = [
    [3474, 12427],
    [2298, 11596],
];

var polyline = L.polyline(polylinePoints).addTo(map);

然后我尝试了这个......

var pointA = new L.LatLng(3474, 12427);
var pointB = new L.LatLng(2298, 11596);
var pointList = [pointA, pointB];

var firstpolyline = new L.Polyline(pointList, {
    color: 'red',
    weight: 3,
    opacity: 0.5,
    smoothFactor: 1
});
firstpolyline.addTo(map);

...这条线仍然没有显示。

问题可能是我使用的是像素坐标而不是实际的纬度和经度坐标吗?如果是这样,我如何使用像素坐标在标记之间画线?

【问题讨论】:

    标签: leaflet


    【解决方案1】:

    问题可能是我使用的是像素坐标而不是实际的纬度和经度坐标吗?如果是这样,我如何使用像素坐标在标记之间画线?

    当然。

    试试这个:

    var pointA = map.layerPointToLatLng(L.point(3474, 12427));
    var pointB = map.layerPointToLatLng(L.point(2298, 11596));
    var pointList = [pointA, pointB];
    var firstpolyline = new L.Polyline(pointList, {
        color: 'red',
        weight: 3,
        opacity: 0.5,
        smoothFactor: 1
    });
    firstpolyline.addTo(map);
    

    不过,接下来您可能会遇到来源问题,请参阅 map.getPixelOrigin()

    【讨论】:

    • 谢谢。这给了我一个错误leaflet.js:5 Uncaught Error: Invalid LatLng object: (NaN, 1154.5312500000002),它指向var pointA = map.layerPointToLatLng(3474, 12427);,是的,我之前在坐标上尝试过unproject(),但这也没有用。
    • 啊,先用你的坐标创建一个L.Point。已编辑。
    • 这解决了错误,但仍然没有行。尝试将map.unproject() 也添加到坐标中,但只得到一个错误。还将layerPointToLatLng 替换为unproject;没有错误,但也没有行。编辑:没关系,我将其中一个坐标更改为0,0 并看到一条线。谢谢!
    • 现在的问题是这条线没有到达地图上的实际坐标。意义;当我输入两个合法坐标并想在它们之间画线时,它不显示。但是当我输入0,0 时,我看到了这条线,所以我知道它在绘制,它就在地图之外?有什么想法吗?
    • 知道了:var pointA = map.unproject([2099, 11180], map.getMaxZoom());
    猜你喜欢
    • 2021-08-11
    • 2018-11-09
    • 1970-01-01
    • 2016-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多