基于百度地图API的GIS实践--电子围栏

需求是这样的:需要限制某app的使用范围,如果不在范围内,则不允许使用;

解决思路:提前设置app使用范围,根据用户当前GPS位置,判定是否在范围内。

技术调研:因为之前一直用的百度地图api,文档也比较全面,就用它了。打开百度地图JSSDK,发现设置自定义覆盖物接口,IP定位接口,地址计算服务可以满足需求。客户要求精度不是特别高,r如果要求精度比较高的情况下,就得联系百度提供商业服务了。这里插个题外话,百度地图有自己的套坐标体系,既不是国标的坐标体系,也不是GPS坐标体系,如果稍不留神,很容易搞晕。

码砖:

注册百度开发者账号,登陆百度地图api控制台,创建应用,配置相关权限。

基于百度地图API的GIS实践–限制APP使用范围

基于百度地图API的GIS实践–限制APP使用范围

基于百度地图API的GIS实践–限制APP使用范围
百度自带的api示例还是很给力的

判断某个点是否在某个区域内,要用到百度地图提供的公共API,GeoUtils_min.js。

核心js:

//实例化鼠标绘制工具

var drawingManager = new BMapLib.DrawingManager(_bdmap, {

isOpen: false, //是否开启绘制模式

enableDrawingTool: true, //是否显示工具栏

drawingToolOptions: {

anchor: BMAP_ANCHOR_TOP_RIGHT, //位置

offset: new BMap.Size(5, 5), //偏离值

drawingModes: [

BMAP_DRAWING_CIRCLE,

BMAP_DRAWING_POLYGON,

BMAP_DRAWING_RECTANGLE

] //控制工具栏显示的工具

},

circleOptions: styleOptions, //圆的样式

polylineOptions: styleOptions, //线的样式

polygonOptions: styleOptions, //多边形的样式

rectangleOptions: styleOptions //矩形的样式

});

//添加鼠标绘制工具监听事件,用于获取绘制结果

drawingManager.addEventListener(‘overlaycomplete’, overlaycomplete);

//某个坐标位置是否在区域内,这里涉及到精度问题

BMapLib.GeoUtils.isPointInCircle(pt, circle);

BMapLib.GeoUtils.isPointInPolygon(pt, polygon);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值