簡體   English   中英

OpenLayers 以米為單位繪制實際寬度的 LineString

[英]OpenLayers draw LineString with real width in meters

我嘗試使用最新的穩定 OpenLayers 庫繪制寬度以米為單位的 polyLine(道路車道),但它沒有正確的實際寬度(在 Google Maps 圖層頂部檢查)。 這是對我有用的代碼片段:

polyLineFeature.setStyle((feature, resolution) => {
    const lineString = feature.getGeometry();
    const lineStyles = [
        new Style({
            stroke: new Stroke({
                width:
                    laneWidth /
                    resolution /
                    getPointResolution("EPSG:3857", 1, lineString.getCoordinateAt(0.5)),
                lineCap: "square",
            }),
        }),
    ];
    return lineStyles;
});

我到處都使用默認投影(web mercator)。

但是我不明白為什么我必須將實際寬度(以米為單位)除以當前分辨率和實際區域內相關的另一個分辨率。 這在任何地方都有解釋嗎?

WebMercator 3857在距離方面是一個糟糕的投影。 當您遠離赤道時,它會引入巨大的失真(這就是為什么格陵蘭在地圖上看起來如此之大,而實際上它是一塊相當小的土地)。

通過將寬度除以getPointResolution ,您可以有效地糾正這種失真。

如果您使用另一個保留距離的投影,例如 UTM,則不必進行此除法(或者,如果這樣做, getPointResolution的值為 1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM