[英]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.