首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OpenLayers 4在地图上画圆圈。以米为单位的圆半径和使用纬度和经度的地图

OpenLayers 4在地图上画圆圈。以米为单位的圆半径和使用纬度和经度的地图
EN

Stack Overflow用户
提问于 2021-08-29 15:20:14
回答 1查看 203关注 0票数 0

我不知道为什么,但可用的资源似乎对每个场景都非常具体,不会对其他人或不同版本的人有所帮助。

我想要做的是:https://openlayers.org/en/latest/examples/custom-circle-render.html。但这个例子似乎行不通。此外,我想画一个圆,其中的点以度为单位(EPSG:4326),半径以米为单位。我的地图投影也是EPSG:4326。我最终试着简化为以下几点:

代码语言:javascript
运行
复制
    var vectorSource = new ol.source.Vector();
    var map = new ol.Map({
        target: document.getElementById('map'),
        view: new ol.View({
            projection: 'EPSG:4326',
            center: [0, 0],
            zoom: 5
        }),
        layers: [
            new ol.layer.Tile({
                projection: 'EPSG:4326',
                source: new ol.source.OSM()
            }),
            new ol.layer.Vector({
                projection: 'EPSG:4326',
                source: vectorSource,
            }),
        ],
    });

function MapAddRadius() {
        var circle = new ol.geom.Circle(
            ol.proj.transform([0, 0], 'EPSG:4326', 'EPSG:3857'),
            10
        );
        var circleFeature = new ol.Feature(circle);
        vectorSource.addFeature(circleFeature);
    }

这确实画了一个圆,但它的大小不正确。这让我相信我使用了错误的投影,因为大小确实与度相关,而不是米。或者有一些我不知道的函数可以让这一切变得更容易。我知道精度可能是一个问题,但我画的是小圆圈,比如不到1公里,所以我不太担心它。

请告诉我正确的方向。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-30 10:15:13

ol.geom.Circle要求坐标和半径使用相同的单位,并且所有几何图形都必须位于视图投影中。示例中使用的自定义渲染器特定于圆形几何,由于早期版本中的省略,该渲染器仅适用于OpenLayers 6。如果您必须在EPSG:4326视图中具有圆形几何,且半径以米为单位,请尝试

代码语言:javascript
运行
复制
    var circle = new ol.geom.Circle(
        ol.proj.transform([lon, lat], 'EPSG:4326', 'EPSG:3857'),
        radius
    ).transform('EPSG:3857', 'EPSG:4326');

代码语言:javascript
运行
复制
    var circle = new ol.geom.Circle(
        [lon, lat],
        radius / ol.proj.getPointResolution('EPSG:4326', 1, [lon, lat], 'm')
    )

第二种方法将半径缩放到接近于北纬和南纬地面上的真实距离。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68974324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档