百度地图定位签到功能

1. 注意 key 一定要在activity 前面

<application    android:allowBackup="true"    android:icon="@mipmap/ic_launcher"    android:label="@string/app_name"    android:supportsRtl="true"    android:theme="@style/AppTheme" >    <service        android:name="com.baidu.location.f"        android:enabled="true"        android:process=":remote" >    </service>

    <meta-data        android:name="com.baidu.lbsapi.API_KEY"        android:value="6dsXhPU5WWHcBxGwQtHZKIGfZZBorMZ5" />
2  .xml 文件
<com.baidu.mapapi.map.MapView    android:id="@+id/map_view"    android:layout_width="wrap_content"    android:layout_height="wrap_content">

</com.baidu.mapapi.map.MapView>

3. java文件
public class LoactionView extends AppCompatActivity {    MapView mMapView;    BaiduMap mBaiduMap;    LocationClient mLocationClient;    LocationClientOption mOption;    boolean isFirstLoc = true;// 是否首次定位    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        SDKInitializer.initialize(getApplicationContext());        setContentView(R.layout.activity_loaction_view);        mMapView = (MapView) findViewById(R.id.map_view);        mBaiduMap = mMapView.getMap();        mBaiduMap.setMyLocationEnabled(true);        mLocationClient = new LocationClient(getApplicationContext());        mLocationClient.setLocOption(getDefaultLocationClientOption());        mLocationClient.registerLocationListener(mBDLocationListener);        mLocationClient.start();

        mMapView.refreshDrawableState();    }    /***     *     * @return DefaultLocationClientOption     */    public LocationClientOption getDefaultLocationClientOption(){

             mOption = new LocationClientOption();            mOption.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备            mOption.setCoorType("bd09ll");//可选,默认gcj02,设置返回的定位结果坐标系,如果配合百度地图使用,建议设置为bd09ll;            //mOption.setScanSpan(0);//可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的            mOption.setIsNeedAddress(true);//可选,设置是否需要地址信息,默认不需要            mOption.setIsNeedLocationDescribe(true);//可选,设置是否需要地址描述            mOption.setNeedDeviceDirect(false);//可选,设置是否需要设备方向结果            mOption.setLocationNotify(false);//可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果            mOption.setIgnoreKillProcess(true);//可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死            mOption.setIsNeedLocationDescribe(true);//可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”            mOption.setIsNeedLocationPoiList(true);//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到            mOption.SetIgnoreCacheException(false);//可选,默认false,设置是否收集CRASH信息,默认收集

        return mOption;    }    private BDLocationListener mBDLocationListener = new BDLocationListener() {

        @Override        public void onReceiveLocation(BDLocation location) {            if (location == null || mMapView == null)                return;            MyLocationData locData = new MyLocationData.Builder().                    accuracy(location.getRadius()).direction(100).latitude(location.getLongitude()).build();            mBaiduMap.setMyLocationData(locData);            if (isFirstLoc) {                isFirstLoc = false;                LatLng ll = new LatLng(location.getLatitude(),                        location.getLongitude());

                //地图标注                BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.icon_geo);                OverlayOptions options = new MarkerOptions().position(ll).icon(bitmapDescriptor);                mBaiduMap.addOverlay(options);  /*   * 标绘圆   * */                CircleOptions circleOptions = new CircleOptions();                circleOptions.center(ll);//设置圆心坐标                circleOptions.fillColor(0Xaafaa355);//圆的填充颜色                circleOptions.fillColor(0Xaafaa355);//圆的填充颜色                circleOptions.radius(400);//设置半径                circleOptions.stroke(new Stroke(2, 0xAA00FF00));//设置边框                mBaiduMap.addOverlay(circleOptions);

                MapStatusUpdate u = MapStatusUpdateFactory.newLatLngZoom(ll, 16);   //设置地图中心点以及缩放级别               //MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);                mBaiduMap.animateMapStatus(u);            }

            // TODO Auto-generated method stub            if (null != location && location.getLocType() != BDLocation.TypeServerError) {                StringBuffer sb = new StringBuffer(256);                sb.append("time : ");                /**                 * 时间也可以使用systemClock.elapsedRealtime()方法 获取的是自从开机以来,每次回调的时间;                 * location.getTime() 是指服务端出本次结果的时间,如果位置不发生变化,则时间不变                 */                sb.append(location.getTime());                sb.append("\nerror code : ");                sb.append(location.getLocType());                sb.append("\nlatitude : ");                sb.append(location.getLatitude());                sb.append("\nlontitude : ");                sb.append(location.getLongitude());                sb.append("\nradius : ");                sb.append(location.getRadius());                sb.append("\nCountryCode : ");                sb.append(location.getCountryCode());                sb.append("\nCountry : ");                sb.append(location.getCountry());                sb.append("\ncitycode : ");                sb.append(location.getCityCode());                sb.append("\ncity : ");                sb.append(location.getCity());                sb.append("\nDistrict : ");                sb.append(location.getDistrict());                sb.append("\nStreet : ");                sb.append(location.getStreet());                sb.append("\naddr : ");                sb.append(location.getAddrStr());                sb.append("\nDescribe: ");                sb.append(location.getLocationDescribe());                sb.append("\nDirection(not all devices have value): ");                sb.append(location.getDirection());                sb.append("\nPoi: ");                if (location.getPoiList() != null && !location.getPoiList().isEmpty()) {                    for (int i = 0; i < location.getPoiList().size(); i++) {                        Poi poi = (Poi) location.getPoiList().get(i);                        sb.append(poi.getName() + ";");                    }                }                if (location.getLocType() == BDLocation.TypeGpsLocation) {// GPS定位结果                    sb.append("\nspeed : ");                    sb.append(location.getSpeed());// 单位:km/h                    sb.append("\nsatellite : ");                    sb.append(location.getSatelliteNumber());                    sb.append("\nheight : ");                    sb.append(location.getAltitude());// 单位:米                    sb.append("\ndescribe : ");                    sb.append("gps定位成功");                } else if (location.getLocType() == BDLocation.TypeNetWorkLocation) {// 网络定位结果                    // 运营商信息                    sb.append("\noperationers : ");                    sb.append(location.getOperators());                    sb.append("\ndescribe : ");                    sb.append("网络定位成功");                } else if (location.getLocType() == BDLocation.TypeOffLineLocation) {// 离线定位结果                    sb.append("\ndescribe : ");                    sb.append("离线定位成功,离线定位结果也是有效的");                } else if (location.getLocType() == BDLocation.TypeServerError) {                    sb.append("\ndescribe : ");                    sb.append("服务端网络定位失败,可以反馈IMEI号和大体定位时间到[email protected],会有人追查原因");                } else if (location.getLocType() == BDLocation.TypeNetWorkException) {                    sb.append("\ndescribe : ");                    sb.append("网络不同导致定位失败,请检查网络是否通畅");                } else if (location.getLocType() == BDLocation.TypeCriteriaException) {                    sb.append("\ndescribe : ");                    sb.append("无法获取有效定位依据导致定位失败,一般是由于手机的原因,处于飞行模式下一般会造成这种结果,可以试着重启手机");                }               logMsg(sb.toString());            }        }

    };    /**     * 显示请求字符串     *     * @param str     */    public void logMsg(String str) {        Log.e("msg", str);  /*      try {            if (LocationResult != null)                LocationResult.setText(str);        } catch (Exception e) {            e.printStackTrace();        }*/    }

    // 三个状态实现地图生命周期管理    @Override    protected void onResume() {        super.onResume();        mMapView.onResume();    }

    @Override    protected void onPause() {        super.onPause();        mMapView.onPause();    }

    @Override    protected void onDestroy() {        mLocationClient.unRegisterLocationListener(mBDLocationListener);        mLocationClient.stop();        mBaiduMap.setMyLocationEnabled(false);        super.onDestroy();        mMapView.onDestroy();        mMapView = null;    }}
				
时间: 2024-11-05 19:46:55

百度地图定位签到功能的相关文章

微信企业号开发:微信考勤百度地图定位二

使用微信考勤百度地图定位中的方法定位,可以定位到一个具体的位置某省某市某区某路某号,总是让人感觉显示不是很友好,如果直接显示,软件园,科技园之类的是不是更好呢?于是查了一下百度地图的相关文档,其实也很简单.百度有附近的功能,还有地址解析的功能,都可以实现. 例如我就是用了Geocoder服务,实现了需要的效果. 核心代码: var map = new BMap.Map("allmap"); var circle = new BMap.Geolocation(); circle.getC

Android百度地图定位

说到百度地图,现在这个时候应该都是众说周知了吧,多的话不扯了,直接奔向主题. 接入百度地图api必须申请key,这里申请key就不用说了,官方文档上面有介绍如何去申请key. 这里使用的百度地图定位是4.2的版本,api是3.1.1版本.如果申请好了key,那么就可以进入编码阶段了,具体实现如下: 1.引入百度地图相关jar包及armeabi目录到libs目录中 2.在项目的AndroidManifest.xml文件中配置相关信息 配置权限 <uses-permission android:na

Android利用百度地图定位

百度地图照着百度的教程做的总是出现报错 请帮我看看错误在那 2013-12-13 15:16168海军 | 分类:百度地图 | 浏览1252次 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.map/com.example.map.MainActivity}: android.view.InflateException: Binary XML file line #11: Error i

百度地图定位记录

百度地图是我们做开发要经经常使用到的,在天朝.我们望谷歌而兴叹! !! 首先我们须要从百度地图API下载相应的API  JAR  以及SO文件,防止百度 官网抽风,俺机智的把里面的东西先所有下载出来给出下载链接例如以下: 百度地图API及工具下载地址 官网事实上以及给出了完整的案列以及开发文档,可是假设照搬的话还是不能成功的. 前面配置啥的还是看官网吧. 给出链接 http://developer.baidu.com/map/index.php   方便伸手党. 以下贴出我的代码: 点击下载百度

Android百度地图定位demo

AS写的百度地图定位demo 版本V6.0.5 先上效果图     版权声明:本文为博主原创文章,未经博主允许不得转载.

微信企业号开发:微信考勤百度地图定位,错误修正

在使用百度地图进行微信考勤时,遇到很多问题,尤其是定位问题,我知道定位有偏差,但使用百度地图,几十次后,偶尔一次会错的离谱,例如直接就定位到了外省,例如我一直在西安,一次定位到了天津,一次定位到了石家庄,我不知道为什么会这样.偏差几千米还能理解,可偏差几百公里就是在让人不能理解了.是因为我用的百度API是免费的吗?当然出现的次数不多,一般情况下,四五十次,会偶尔出现一两次这么离谱的偏差. 实在找不到原因,也不能是缓存,因为我没有去过石家庄,天津.没办法,但这个问题,又不能不解决,于是只能把四种计

IOS中使用百度地图定位后获取城市坐标,城市名称,城市编号信息

IOS中使用百度地图定位后获取城市坐标,城市名称,城市编号信息 /**当获取到定位的坐标后,回调函数*/ - (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation{ BMKCoordinateRegion region; region.center.latitude  = userLocation.location.coordinate.latitude; region.center.longitude = userLoca

Android 百度地图定位(手动+自动) 安卓开发教程

近由于项目需要,研究了下百度地图定位,他们提供的实例基本都是用监听器实现自动定位的.我想实现一种效果:当用户进入UI时,不定位,用户需要定位的时候,自己手动点击按钮,再去定位当前位置.  经过2天研究和咨询,找到了解决方案,在此备忘一下. 注意:定位使用真机才能够真正定位:模拟器的话,在DDMS中的Emulator Control中,选择Manual,下面单选按钮选择Decimal,然后填写经纬度,send后,再点击定位我的位置按钮,就能定位了(这应该算是固定定位,哈哈...). 1.第一步当然

【MUI】百度地图定位功能

博主最近进行一款APP开发,需要用到定位功能,经过一番折腾,终于搞定,不废话,代码如下 mui.plusReady(function() { var longitude, latitude; //var map = new BMap.Map("container"); // navigator.geolocation.getCurrentPosition(function(position) { // longitude = position.coords.longitude; //