WEBGIS使用OpenLayers3中Interaction绘制长方形和正方形

 <input type="button" class="Interaction" value="drawRectangle" οnclick="drawRectangle()" />
 <input type="button" class="Interaction" value="addSquare" οnclick="addSquare()" />

//绘制长方形
        function drawRectangle() {
            //设置maxPoints及geometryFunction
            var maxPoints, geometryFunction;
            maxPoints = 2;
            geometryFunction = function (coordinates, geometry) {
                if (!geometry) {                                                    //!geometry  意思是如果没有geometry则...
                    geometry = new ol.geom.Polygon();
                }
                //设置起始点及终止点
                var start = coordinates[0];
                var end = coordinates[1];
                geometry.setCoordinates([
                    [start, [start[0], end[1]], end, [end[0], start[1]], start]     //特别注意,长方形终止点与起始点重合
                ]);
                return geometry;
            };
            //新建source和layer
            var source = new ol.source.Vector({
                wrapX: false,
            });
            var layer = new ol.layer.Vector({
                source: source
            });
            //新建绘制长方形interaction
            var drawRectangle = new ol.interaction.Draw({
                source: source,
                type: "LineString",
                geometryFunction: geometryFunction,
                maxPoints: maxPoints
            });
            //将layer和interaction添加到地图中
            map.addLayer(layer);
            map.addInteraction(drawRectangle);
        }

 

//绘制正方形   ***成功
        function addSquare() {
            //新建source和layer
            var source = new ol.source.Vector({
                wrapX: false,
            });
            var layer = new ol.layer.Vector({
                source: source
            });
            //设置maxPoints及geometryFunction
            var maxPoints, geometryFunction;
            geometryFunction = ol.interaction.Draw.createRegularPolygon(4);
            //新建绘制正方形interaction
            var drawSquare = new ol.interaction.Draw({
                source: source,
                type: "Circle",
                geometryFunction: geometryFunction,
                //maxPoints: maxPoints
            });
            //将layer和interaction添加到地图上
            map.addLayer(layer);
            map.addInteraction(drawSquare);
        }

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值