gpt4 book ai didi

javascript - OpenLayers 以米为单位绘制实际宽度的 LineString

转载 作者:行者123 更新时间:2023-12-01 15:43:36 30 4
gpt4 key购买 nike

我尝试使用最新的稳定 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)。
但是我不明白为什么我必须将实际宽度(以米为单位)除以当前分辨率和实际区域内相关的另一个分辨率。
这在任何地方都有解释吗?

最佳答案

Web墨卡托3857是关于距离的不好的投影。当您远离赤道时,它会引入巨大的失真(这就是为什么格陵兰在 map 上看起来如此之大,而实际上它是一块相当小的土地)。
通过将宽度除以 getPointResolution ,您正在有效地纠正这种失真。
如果您使用另一个保留距离的投影,例如 UTM,则不必进行此除法(或者,如果这样做,getPointResolution 的值将为 1)

关于javascript - OpenLayers 以米为单位绘制实际宽度的 LineString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63708645/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com