美文网首页
2019-03-01Android 集成高德地图实现签到打卡功能

2019-03-01Android 集成高德地图实现签到打卡功能

作者: Lna_35da | 来源:发表于2019-03-01 22:27 被阅读0次

最近公司要做一个OA办公项目,其中有一个需求为根据一个地点在这个地点多少米范围之内可以打卡签到。

Emmm  话不多说去实现该需求。 这个需求高德百度都可以实现。在此用的是高德SDK。

逻辑 

1.所用到的有  定位sdk 和地图sdk 

2.逻辑----->获取定位信息------->在指定打卡签到区域添加围栏----->围栏添加成功后画出围栏范围

----->注册广播(接收进出入围栏广播,当用户进入此区域就可以实现打卡签到逻辑)  

github地址:https://github.com/CreatNameFy/PunchDemo

注意事项

1.在定位的时候不要持续定位不然滑动地图会自动回来  当然需求要持续定位那就自己想办法啦 

2.在定位成功返回的参数中获取定位时间  不要那本地时间戳来进行判断  因为用户可以修改时间啦

效果图

代码 有需要再贴  懒哈哈

以下为代码部门 

获取经纬度的代码略过

1通过经纬度添加围栏

//注册广播  接收进入围栏 在围栏中  离开围栏三种状态====================================

// 注册围栏状态广播

    protected  void registerReceiver(){

//接受定位广播

        IntentFilter filter =new IntentFilter(

ConnectivityManager.CONNECTIVITY_ACTION);

filter.addAction(GEOFENCE_BROADCAST_ACTION);

mBReceiver =new MyBroadcastReceiver();

registerReceiver(mBReceiver, filter);

}

class MyBroadcastReceiverextends BroadcastReceiver {

@Override

        public void onReceive(Context context, Intent intent) {

if (intent.getAction().equals(GEOFENCE_BROADCAST_ACTION)) {

//解析广播内容

                Bundle bundle = intent.getExtras();

//获取当前有触发的围栏对象:

                GeoFence fence = bundle.getParcelable(GeoFence.BUNDLE_KEY_FENCE);

int status = bundle.getInt(GeoFence.BUNDLE_KEY_FENCESTATUS);

StringBuffer sb =new StringBuffer();

switch (status) {

case GeoFence.STATUS_LOCFAIL:

//                        定位失败

                        break;

case GeoFence.STATUS_IN:

enter();

Log.e(TAG,"进入围栏");

break;

case GeoFence.STATUS_OUT:

out();

Log.e(TAG,"离开围栏");

break;

case GeoFence.STATUS_STAYED:

Log.e(TAG,"停留围栏");

break;

default:

break;

}

}

}

}

//创建添加围栏回调======================================

GeoFenceListener listener=new GeoFenceListener() {

@Override

    public void onGeoFenceCreateFinished(List<GeoFence> list, int errorCode, String s) {

        if (errorCode == GeoFence.ADDGEOFENCE_SUCCESS) {//判断围栏是否创建成功

            Log.d("test", "添加围栏成功!!");

locationUtil.circle(aMap,l,l1,bean.getData().getDistance());

            //            添加围栏成功后注册广播监听进出围栏

            registerReceiver();

        } else {

            Log.d("test", "添加围栏失败!!");

}

}

};

// 添加围栏==========================================================================

    //1上下文 2创建围栏监听3,围栏半径4 5 经纬度

    add(mContext,listener,10,l,l1);

    public void add(Context context,GeoFenceListener mGeoFenceListener,int m,double latitude,double         longitude) {

        GeoFenceClient mGeoFenceClient=new GeoFenceClient(context);

        //创建一个中心点坐标

        DPoint centerPoint =new DPoint();

        //设置中心点纬度

        centerPoint.setLatitude(latitude);

        //设置中心点经度

        centerPoint.setLongitude(longitude);

    //执行添加围栏的操作

        mGeoFenceClient.addGeoFence (centerPoint,m/2,"公司打卡");

    mGeoFenceClient.setGeoFenceListener(mGeoFenceListener);

    mGeoFenceClient.setActivateAction(GeoFenceClient.GEOFENCE_IN| GeoFenceClient.GEOFENCE_OUT|     GeoFenceClient.GEOFENCE_STAYED);

    //GEOFENCE_BROADCAST_ACTION  为自定义的字符串

    mGeoFenceClient.createPendingIntent(GEOFENCE_BROADCAST_ACTION);

}

//绘制围栏

public void circle(AMap aMap,double v1,double v2,int m) {

LatLng latLng =new LatLng(v1, v2);

aMap.addCircle(new CircleOptions().center(latLng)

.radius(m/2).strokeColor(Color.parseColor("#3F51B5"))

.fillColor(Color.argb(100,29,161,242)).strokeWidth(5));

}

// 隐藏定位显示的圆圈

public void set(AMap aMap) {

MyLocationStyle locationStyle =new MyLocationStyle();

locationStyle.strokeColor(Color.argb(0,0,0,0));

locationStyle.radiusFillColor(Color.argb(0,0,0,0));

locationStyle.strokeWidth(0);

aMap.setMyLocationStyle(locationStyle);

}

相关文章

  • 2019-03-01Android 集成高德地图实现签到打卡功能

    最近公司要做一个OA办公项目,其中有一个需求为根据一个地点在这个地点多少米范围之内可以打卡签到。 Emmm 话不多...

  • iOS 高德地图的使用

    iOS:高德地图的使用 本人花了点时间集成了高德地图的几乎所有的功能,包含:地图的显示、地图的绘制、地图的定位、地...

  • kotlin撸一个天气预报app

    效果图 功能介绍: 支持定位当前所在城市(集成高德地图) 支持加载多个城市天气(用户配置尚未实现,可以在代码里加)...

  • 高德地图添加大头针和周边搜索

    1.集成高德地图: 在高德官网导入sdk,初始化地图 -(void)initMapView { ///地图需要...

  • 百度地图web--拖拽选址

    实现地图拖拽选址功能,百度地图并未像高德地图拖拽选址功能 。由于项目需要,在百度地图的基础上实现简单的拖拽功能。大...

  • iOS开发之百度地图

    现在的应用,几乎都含有地图功能,但是往往系统地图功能达不到需求,所以需要集成高德地图和百度地图,而大部分iOS...

  • iOS集成高德地图SDK

    前言:关于这次集成高德地图,打算分几个内容定位 POI检索 导航 线路规划,现在只是简单地实现了前两个功能,先记录...

  • 用高德地图简单实现打卡功能

    老规矩,先上个图吧,虽然没啥卵用。。。 其实对于熟悉高德API的人来说,这个功能估计五分钟就做出来了,真的很简单。...

  • iOS App内部调起百度地图、高德地图、腾讯地图

    公司App集成的是百度地图,然后调起百度地图、高德地图、腾讯地图、苹果地图进行导航的功能. 一.首先需要在info...

  • Android从0到完整项目(7)地图与导航

    百度地图或者高德地图 实现 与地图相关的功能 以高德地图为例,百度地图API 基本类似,看后台要求,经纬度要一致,...

网友评论

      本文标题:2019-03-01Android 集成高德地图实现签到打卡功能

      本文链接:https://www.haomeiwen.com/subject/pmtsuqtx.html