openlayers绘制一个线段

显示效果

<!doctype html>
<html lang="zh">

<head>
    <link href="https://cdn.bootcdn.net/ajax/libs/openlayers/4.6.5/ol-debug.css" rel="stylesheet">

    <script src="https://cdn.bootcdn.net/ajax/libs/openlayers/4.6.5/ol-debug.js"></script>
    <title>Day-01</title>
</head>

<body>
    <div id="map" class="map" style="width: 100%;height: 800px;"></div>
    <script type="text/javascript">
        const view = new ol.View({
            center: ol.proj.fromLonLat([116.39570134439728, 39.9162774443995]),
            zoom: 16
        });
        const layers = [
            new ol.layer.Tile({
                source: new ol.source.OSM()
            })
        ];
        const map = new ol.Map({
            target: 'map',
            layers,
            view
        });
        // 创建一个Vector Layer
        var vectorLayer = new ol.layer.Vector({
            source: new ol.source.Vector()
        });

        // 添加Vector Layer到地图中
        map.addLayer(vectorLayer);

        // 定义线的控制点
        var controlPoints = [
            [-110, 40],  // 起点
            [-75, 75],   // 控制点1
            [-25, 75],   // 控制点2
            [10, 40]     // 终点
        ];

        // 创建一个线的Geometry
        var bezierCurve = new ol.geom.LineString(controlPoints);

        // 将线的Geometry转换为Feature
        var bezierFeature = new ol.Feature({
            geometry: bezierCurve
        });

        // 将Feature添加到Vector Layer中
        vectorLayer.getSource().addFeature(bezierFeature);

        // 设置线的样式
        bezierFeature.setStyle(new ol.style.Style({
            stroke: new ol.style.Stroke({
                color: 'blue',
                width: 4
            })
        }));

        // 将地图视图定位到线的范围
        var extent = bezierCurve.getExtent();
        map.getView().fit(extent, { padding: [50, 50, 50, 50] });

    </script>
</body>

</html>
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在OpenLayers中将矩形分割成线段,你可以使用OpenLayers的几何计算方法和绘制工具来实现。 以下是一个示例代码: ```javascript // 假设你已经有了矩形的边界信息 var rectangleExtent = [xmin, ymin, xmax, ymax]; // 矩形的边界信息 // 创建矩形的几何要素 var rectangleGeometry = new ol.geom.Polygon.fromExtent(rectangleExtent); // 获取矩形的边长和边数 var rectangleLength = Math.max(rectangleGeometry.getExtent()[2] - rectangleGeometry.getExtent()[0], rectangleGeometry.getExtent()[3] - rectangleGeometry.getExtent()[1]); var rectangleSides = rectangleGeometry.getLinearRing().getCoordinates().length - 1; // 定义分割数目 var segmentCount = 5; // 假设要将矩形分割成5段 // 计算每段的长度 var segmentLength = rectangleLength / segmentCount; // 创建分割线段的点要素数组 var points = []; // 根据分割数目计算点坐标 for (var i = 0; i <= segmentCount; i++) { var segmentStart = i * segmentLength; var segmentEnd = (i + 1) * segmentLength; var startPoint = rectangleGeometry.getCoordinateAt(segmentStart / rectangleLength); var endPoint = rectangleGeometry.getCoordinateAt(segmentEnd / rectangleLength); points.push(new ol.Feature(new ol.geom.LineString([startPoint, endPoint]))); } // 创建线段图层并添加到地图中 var lineLayer = new ol.layer.Vector({ source: new ol.source.Vector({ features: points, }), }); map.addLayer(lineLayer); ``` 在这个示例中,我们首先获取了矩形的边界信息,并创建了矩形的几何要素。然后,通过计算矩形的边长和边数,我们得到了矩形的边长和边数。 接下来,我们根据给定的分割数目,计算出每段的长度。然后,我们根据分割数目计算出每段的起点和终点坐标,并将这些坐标创建为线段的点要素。 最后,我们创建一个线段图层,并将所有的线段点要素添加到图层中,然后将图层添加到地图中。 请注意,以上代码只是一个示例,你需要根据自己的需求和数据结构进行相应的调整和集成。同时,分割矩形的方式可能受到其他因素的影响,比如分割线的曲线程度等。因此,你可能需要进一步优化和调整代码以满足具体需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值