【问题标题】:Buffering polygon Openlayers 3缓冲多边形 Openlayers 3
【发布时间】:2017-09-20 11:05:29
【问题描述】:

我有以下方法用于读取特征,将其缓冲然后添加回 openlayers 3 地图。

该操作非常适用于正方形和矩形多边形。然而,当涉及到圆形等形状时,最终结果是正方形。

如何调整方法以适应圆形多边形? 读取多边形中存在的点数,然后动态计算生成bufferedExtent数组值?

BufferFeatureAlternative(bufferAmount) {
    let state = this._store.getState(),
        tmpFeature = state.map.feature.feature_object;

    let poitnExtent = tmpFeature.getGeometry().getExtent(),
        bufferedExtent = new ol.extent.buffer(poitnExtent, bufferAmount),
        bufferPolygon = new ol.geom.Polygon(
            [
                [
                    [bufferedExtent[0], bufferedExtent[1]],
                    [bufferedExtent[0], bufferedExtent[3]],
                    [bufferedExtent[2], bufferedExtent[3]],
                    [bufferedExtent[2], bufferedExtent[1]],
                    [bufferedExtent[0], bufferedExtent[1]]
                ]
            ]
        ),
        bufferedFeature = new ol.Feature(bufferPolygon);

    let source = this.vectorSource.getSource();
    source.clear();
    source.addFeature(bufferedFeature);
}

【问题讨论】:

    标签: angular openlayers-3 projection


    【解决方案1】:

    您需要使用 JSTS 库来执行此类操作。

    这是一个缓冲线的官方示例,但它可以以相同的方式实现多边形。 https://openlayers.org/en/latest/examples/jsts.html

    【讨论】:

    • 试过了,但在投影为“27700”的地图上不起作用,会产生错误。
    • 除非你提供一个小提琴来展示你的案例,否则很难指导你
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 2014-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多