1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > angular实现百度地图实现电子围栏

angular实现百度地图实现电子围栏

时间:2019-07-25 07:36:21

相关推荐

angular实现百度地图实现电子围栏

百度地图实现电子围栏

1. 电子围栏需求2. 实现方案3. 参考链接4. 主要代码5. 示例文件和代码

1. 电子围栏需求

通过地图实现可绘制区域的电子围栏。电子围栏应用场景:如app在区域内签到,区域内鉴权等。

2. 实现方案

利用浏览器获取当前地理位置,利用鼠标绘制点线画,获得围栏各点坐标和当前位置,并存储到数据库。通过当前在线移动端获取当前地理位置,与电子围栏数据校验对比。

3. 参考链接

百度地图区域绘制

/jsdemo.htm#f0_7

百度地图获取当前位置

/jsdemo.htm#i8_1

4. 主要代码

/*** 利用浏览器重新定位*/getBroswerLocation(){// 判断当前储存是否已有定位数据,有则定位到所记录的位置if (sessionStorage.getItem('geolocation')) {const p = sessionStorage.getItem('geolocation');this.baiduMap.panTo(JSON.parse(p));return;}var geolocation = new BMap.Geolocation();geolocation.getCurrentPosition( (r) => {// 判断位置的状态结果,成功则在地图上续投一个标识if (geolocation.getStatus() == BMAP_STATUS_SUCCESS) {var mk = new BMap.Marker(r.point);// 绘制位置标识this.baiduMap.addOverlay(mk);// 定位到当前位置this.baiduMap.panTo(r.point);console.log(r.point);// 把当前位置写入session储存(可选),关闭浏览器后清空数据。sessionStorage.setItem('geolocation', JSON.stringify(r.point));}else {// 打印出非成功的其他状态 状态描述说明请看下一段。console.error('Map Geolocation Failed =>' + geolocation.getStatus());}}, {enableHighAccuracy: true })}

//关于状态码//BMAP_STATUS_SUCCESS检索成功。对应数值“0”。//BMAP_STATUS_CITY_LIST城市列表。对应数值“1”。//BMAP_STATUS_UNKNOWN_LOCATION位置结果未知。对应数值“2”。//BMAP_STATUS_UNKNOWN_ROUTE导航结果未知。对应数值“3”。//BMAP_STATUS_INVALID_KEY非法密钥。对应数值“4”。//BMAP_STATUS_INVALID_REQUEST非法请求。对应数值“5”。//BMAP_STATUS_PERMISSION_DENIED没有权限。对应数值“6”。(自 1.1 新增)//BMAP_STATUS_SERVICE_UNAVAILABLE服务不可用。对应数值“7”。(自 1.1 新增)//BMAP_STATUS_TIMEOUT超时。对应数值“8”。(自 1.1 新增)

/*** 初始化多边形覆盖物*/initPolygonOverlay() {if (this.options.overlay && this.options.overlay.length) {const tempArr = [];this.options.overlay.forEach(element => {tempArr.push(new BMap.Point(element.longitude, element.latitude));});const polygon = new BMap.Polygon(tempArr, {strokeColor: "red", fillColor: "red", strokeWeight: 2, strokeOpacity: 0.8, fillOpacity: 0.5 }); //创建多边形// 在地图上标识多边形this.baiduMap.addOverlay(polygon);}}

5. 示例文件和代码

以上的部分核心代码。

下面链接为整个组件的ts和html代码:

/guoye/codes/cmasnywkj7r9l5e4dpz0i86

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。