地理围栏(Geo-fencing)是LBS的一种新应用,就是用一个虚拟的栅栏围出一个虚拟地理边界。当手机进入、离开某个特定地理区域,或在该区域内活动时,手机可以接收自动通知和警告。简单来说就是判断一个点是否在某区域内。

如果们用百度地图API来实现地理围栏还是有一定难度的,围栏是圆或者规则多边形还好说,如果围栏是不规则多边形那我们就有点无从下手了,但是百度API团队为我们提供了一个简单的方法——* GeoUtils*

这个库使用起来非常简单,大家可以参考类参考文档:

可以看出GeoUtils不只可用于地理围栏还能用于测距和求面积,十分实用。接下以一个小例子用GeoUtils模拟地理围栏:
主要思路是:定时获取用户位置信息,如果用户离开预定的多边形区域则弹出警告框。
1、添加多边形(地理围栏)

var polygon = new BMap.Polygon([new BMap.Point(115.8444,28.737246),new BMap.Point(116.062868,28.727617),new BMap.Point(116.032972,28.603378),new BMap.Point(115.684573,28.617077)], {strokeColor:"blue", strokeWeight:2, strokeOpacity:0.5});  //创建多边形map.addOverlay(polygon);

2、判断用户是否在地理围栏内:

var geolocation = new BMap.Geolocation();var dingwei=setInterval(function () {geolocation.getCurrentPosition(function(r){if(this.getStatus() == BMAP_STATUS_SUCCESS){map.panTo(r.point);if( BMapLib.GeoUtils.isPointInPolygon(r.point,polygon)){console.log("在监控方位内")}else{alert("你已经逃离监控区域")}}},{enableHighAccuracy: true})},2000);

通过定时任务setInterval两秒获得一次用户位置信息,调用BMapLib.GeoUtils.isPointInPolygon方法判断用户是否在预设区域,如果在则返回true,控制太输出:“在监控方位内”;如果不在预设区域则返回false,弹出警告框:“你已经逃离监控区域”


GIS技术交流:GISGO(http://www.gisgo.top)

关注我,GIS相关技术交流。微信公众号:gisxxcom

百度地图API实现地理围栏相关推荐

  1. HTML5+百度地图API实现地理定位

    背景 如果知道用户在哪里,往往会提高很多Web应用的体验,比如为用户指明方向,对它们要去的地方给出建议,让用户知道它们所在的区域内有哪些人可能会对某个活动感兴趣等等.现在,利用HTML5(以及基于Ja ...

  2. 利用百度地图API获取地理编码

    利用百度的开放平台进行操作 百度地图开放平台 | 百度地图API SDK | 地图开发 下拉至底部,点击Web服务API python 程序如下 import json from urllib.req ...

  3. 百度地图js中地理围栏算法bug

    本人近期因为项目需要,尝试把百度的js地理围栏算法改成java实现,测试过程中发现有bug存在,一开始以为是转换过程中出现了问题,后来测试了原生js,发现问题确实存在.此处demo我参照了网上的示例原 ...

  4. 高德地图API创建地理围栏

    我选择使用python的requests库来进行Post从而创建地理围栏. import json,requests url = "https://restapi.amap.com/v4/g ...

  5. android 百度地图距离计算器,Stata:我和她离多远?基于百度地图API的地理距离计算...

  6. python百度地图api经纬度_详解用Python调用百度地图正/逆地理编码API

    一.背景 (正)地理编码指的是:将地理位置名称转换成经纬度: 逆地理编码指的是:将经纬度转换成地理位置信息,如地名.所在的省份或城市等 百度地图提供了相应的API,可以方便调用.相应的说明文档如下: ...

  7. c语言api获取百度地图,H5调用百度地图API获取地理位置

    //获取当前位置 var geolocation = new BMap.Geolocation(); geolocation.getCurrentPosition(function(r){ alert ...

  8. 基于uni-app与百度地图API实现简易前后端分离的地理围栏应用

    一.引言 地理围栏(Geo-fencing)是LBS 的一种新应用,就是用一个虚拟的栅栏围出一个虚拟地理边界.当手机进入.离开某个特定地理区域,或在该区域内活动时,后台可以感知到这一变化,同时手机可以 ...

  9. 【百度地图api】前端 百度地图添加地理围栏

    需求:添加教练场区域,在百度地图上选择多边形电子围栏,保存坐标: 主要参考百度地图api: 遇到的小坑:注意绘制百度地图多边形时,传入的坐标数组的结构!!! 相对来说比较简单,百度api已经很详细了. ...

最新文章

  1. 周志华教授:如何做研究与写论文?(附完整的PPT全文)
  2. nagios监控linux nrpe安装
  3. java gc会回收类么_Java GC 垃圾回收机制
  4. 牛客网《BAT面试算法精品课》学习笔记
  5. 乌龟的故事,很精彩滴哟
  6. 找出有序数组X和Y中所有元素的中位数(X,Y分别含n个元素)(算法导论第三版9.3-8)
  7. 信息学奥赛一本通C++语言——1057:简单计算器
  8. MATrICP论文解读
  9. 《好好学Java 从零基础到项目实战》姗姗而来
  10. k8s源码分析 pdf_Spark Kubernetes 的源码分析系列 - features
  11. Node进阶:核心模块http简介
  12. 变压器电量损耗计算及实例
  13. 未能解决并且期待解决的第二个诡异事件----HashMap相关方法
  14. 给yarn配置国内镜像加速器
  15. 【软件设计】CS客户端整体架构
  16. 考研最后冲刺:这些要提前准备!
  17. 17track包裹单个物流轨迹抓取(一)
  18. 3d云html原理,云渲染是什么原理?
  19. 学校计算机室应该配备哪种灭火器,学校教学楼应配备的灭火器型号是什么
  20. (纯前台)读取、解析并展示xls/xlsx

热门文章

  1. linux 下生成中文pdf,Linux itex pdf生成中文不显示
  2. 洛谷——P1304 哥德巴赫猜想
  3. C# 委托事件传递参数
  4. 表单标签 input
  5. PHP网站开启gzip压缩,PHP网站程序中开启Gzip压缩的两种方法
  6. linux桌面版如何添加新网络,ubuntu网络配置(桌面版和服务器版)
  7. 4怎么打开项目_苹果电脑怎么把文件复制到u盘
  8. python随机生成两个一维数组_如何用python随机产生一个一维数组
  9. vue-cli中理不清的assetsSubDirectory 和 assetsPublicPath
  10. 来自运维伪大佬的叨叨