腾讯地图绘制围栏

// 初始化地图
            map = new TMap.Map('container', {
                zoom: 12, // 设置地图缩放级别
                center: new TMap.LatLng(nowLat, nowLng), // 设置地图中心点坐标  //当前定位
            });
            // 初始化几何图形及编辑器
            var polygon = new TMap.MultiPolygon({
                map: map,
            });
            var circle = new TMap.MultiCircle({
                map: map,
            });
            var rectangle = new TMap.MultiRectangle({
                map: map,
            });
            editor = new TMap.tools.GeometryEditor({
                // TMap.tools.GeometryEditor 文档地址:https://lbs.qq.com/webApi/javascriptGL/glDoc/glDocEditor
                map: map, // 编辑器绑定的地图对象
                overlayList: [
                    // 可编辑图层 文档地址:https://lbs.qq.com/webApi/javascriptGL/glDoc/glDocEditor#4
                    {
                        overlay: polygon,
                        id: 'polygon',
                    },
                    {
                        overlay: circle,
                        id: 'circle',
                    },
                    {
                        overlay: rectangle,
                        id: 'rectangle',
                    },
                ],
                // EDITOR_ACTION.INTERACT  查看和修改 的工作模式
                actionMode: TMap.tools.constants.EDITOR_ACTION.DRAW, // 编辑器的工作模式绘制
                activeOverlayId: 'polygon', // 激活图层
                snappable: false, // 关闭吸附
            });
            // 监听绘制结束事件,获取绘制几何图形
            editor.on('draw_complete', (geometry) => {
                savedGeometryType = editor.getActiveOverlay().id
                // 判断当前处于编辑状态的图层id是否是overlayList中id为rectangle(矩形)图层
                if (editor.getActiveOverlay().id === 'rectangle') {
                    // 获取矩形顶点坐标  保存绘制的几何图形
                    var id = geometry.id;
                    var geo = rectangle.geometries.filter(function (item) {
                        return item.id === id;
                    });
                } else if (editor.getActiveOverlay().id === 'circle') {
                    var id = geometry.id;
                    var geo = circle.geometries.filter(function (item) {
                        return item.id === id;
                    });
                } else {
                    var id = geometry.id;
                    var geo = polygon.geometries.filter(function (item) {
                        return item.id === id;
                    });
                }
                editor.destroy()  //销毁编辑器
            });

初始化地图,进行绘制,只能绘制一个几何图

 var lat;
            var lng;
            var simplePath = [];
            if (savedGeometryType == 'polygon') {
                lat = savedGeometry.paths[0].lat
                lng = savedGeometry.paths[0].lng
                for (i = 0; i < savedGeometry.paths.length; i++) {
                    let a = savedGeometry.paths[i].lat
                    let b = savedGeometry.paths[i].lng
                    simplePath.push(new TMap.LatLng(a, b))
                }
                console.log(simplePath);
            } else if (savedGeometryType == 'circle') {
                lat = savedGeometry.center.lat
                lng = savedGeometry.center.lng
                for (i = 0; i < savedGeometry.paths.length; i++) {
                    let a = savedGeometry.paths[i].lat
                    let b = savedGeometry.paths[i].lng
                    simplePath.push(new TMap.LatLng(a, b))
                }
            } else {
                lat = savedGeometry.center.lat
                lng = savedGeometry.center.lng
                for (i = 0; i < savedGeometry.paths.length; i++) {
                    let a = savedGeometry.paths[i].lat
                    let b = savedGeometry.paths[i].lng
                    simplePath.push(new TMap.LatLng(a, b))
                }
            }
            map = new TMap.Map('container', {
                zoom: 12, // 设置地图缩放级别
                center: new TMap.LatLng(lat, lng), // 设置地图中心点坐标  //当前定位
            });
            document.querySelector('#container a').style.display = "none"
            // 初始化几何图形及编辑器
            editor = new TMap.tools.GeometryEditor({
                map, // 编辑器绑定的地图对象
                overlayList: [ // 可编辑图层
                    {
                        overlay: new TMap.MultiPolygon({
                            map,
                            styles: {
                                highlight: new TMap.PolygonStyle({
                                    color: 'rgba(255, 255, 0, 0.6)'
                                })
                            },
                            geometries: [
                                {
                                    paths: simplePath
                                },
                            ]
                        }),
                        id: savedGeometryType,
                        selectedStyleId: 'highlight'
                    }
                ],
                actionMode: TMap.tools.constants.EDITOR_ACTION.INTERACT, // 编辑器的工作模式 查看和修改 的工作模式 
                activeOverlayId: savedGeometryType, // 激活图层
                selectable: true, // 开启点选功能
                snappable: false // 关闭吸附
            });
            // 监听修改结束事件,获取修改几何图形
            editor.on('adjust_complete', (geometry) => {
                savedGeometryType = editor.getActiveOverlay().id
                // 判断当前处于编辑状态的图层id是否是overlayList中id为rectangle(矩形)图层
                if (editor.getActiveOverlay().id === 'rectangle') {
                    // 获取矩形顶点坐标  保存绘制的几何图形
                    var id = geometry.id;
                    var geo = rectangle.geometries.filter(function (item) {
                        return item.id === id;
                    });
                } else if (editor.getActiveOverlay().id === 'circle') {
                    var id = geometry.id;
                    var geo = circle.geometries.filter(function (item) {
                        return item.id === id;
                    });
                    savedGeometry = geo[0];
                } else {
                    var id = geometry.id;
                    var geo = polygon.geometries.filter(function (item) {
                        return item.id === id;
                    });
                    savedGeometry = geo[0];
                }
            });

渲染保存的几何图,用来修改已经绘制成功的几何图

// 渲染静态地图
        function staticMap() {
            var lat;
            var lng;
            var simplePath = [];
            if (savedGeometryType == 'polygon') {
                lat = savedGeometry.paths[0].lat
                lng = savedGeometry.paths[0].lng
                for (i = 0; i < savedGeometry.paths.length; i++) {
                    let a = savedGeometry.paths[i].lat
                    let b = savedGeometry.paths[i].lng
                    simplePath.push(new TMap.LatLng(a, b))
                }
                console.log(simplePath);
            } else if (savedGeometryType == 'circle') {
                lat = savedGeometry.center.lat
                lng = savedGeometry.center.lng
                for (i = 0; i < savedGeometry.paths.length; i++) {
                    let a = savedGeometry.paths[i].lat
                    let b = savedGeometry.paths[i].lng
                    simplePath.push(new TMap.LatLng(a, b))
                }
            } else {
                lat = savedGeometry.center.lat
                lng = savedGeometry.center.lng
                for (i = 0; i < savedGeometry.paths.length; i++) {
                    let a = savedGeometry.paths[i].lat
                    let b = savedGeometry.paths[i].lng
                    simplePath.push(new TMap.LatLng(a, b))
                }
            }
            if (tkxg == 2) {
                map = new TMap.Map('container', {
                    zoom: 12, // 设置地图缩放级别
                    center: new TMap.LatLng(lat, lng), // 设置地图中心点坐标  //当前定位
                });
                document.querySelector('#container a').style.display = "none"
            } else {
                map = new TMap.Map('staticCon', {
                    zoom: 10, // 设置地图缩放级别
                    center: new TMap.LatLng(lat, lng), // 设置地图中心点坐标  //当前定位
                });
                document.querySelector('#staticCon a').style.display = "none"
            }
            // 初始化几何图形及编辑器
            editor = new TMap.tools.GeometryEditor({
                map, // 编辑器绑定的地图对象
                overlayList: [ // 可编辑图层
                    {
                        overlay: new TMap.MultiPolygon({
                            map,
                            styles: {
                                highlight: new TMap.PolygonStyle({
                                    color: 'rgba(255, 255, 0, 0.6)'
                                })
                            },
                            geometries: [
                                {
                                    paths: simplePath
                                },
                            ]
                        }),
                        id: savedGeometryType,
                        selectedStyleId: 'highlight'
                    }
                ],
                activeOverlayId: savedGeometryType, // 激活图层
            });
            editor.destroy()
        }
        // 获取当前的不精确定位
        function nowDingWei() {
            geolocation.getIpLocation(showPosition)
        }
        function showPosition(position) {
            nowLat = position.lat
            nowLng = position.lng
        }

静态渲染以及获取当前定位

准备工作:

 <!-- 绘制围栏 -->

    <script charset="utf-8"

        src="https://map.qq.com/api/gljs?libraries=tools&v=1.exp&key=NRTBZ-4OFKZ-5FDXV-7XS7F-KW2P2-UABHQ"></script>

        <!-- 定位 -->

    <script type="text/javascript"

        src="https://apis.map.qq.com/tools/geolocation/min?key=NRTBZ-4OFKZ-5FDXV-7XS7F-KW2P2-UABHQ&referer=共享单车"></script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值