百度地图API实现简单的定位功能

下载jar包 https://yunpan.cn/cRedhAyeMAfGM  访问密码 4fbb(最后自己从百度官网下载)

libs里的东西全拷进app的libs中,并关联

1  .  app的build.gradle中配置SO的使用,如下所示:

sourceSets {
        	main {
    			jniLibs.srcDirs = [‘libs‘]
        	}
}

2  在application标签中声明service组件,每个app拥有自己单独的定位service

<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote">
</service>

3  声明使用权限

<!-- 这个权限用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!-- 这个权限用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<!-- 获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!-- 用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!-- 访问网络,网络定位需要上网-->
<uses-permission android:name="android.permission.INTERNET" />
<!-- SD卡读取权限,用户写入离线定位数据-->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
 

4 设置AccessKey,在application标签中加入

<meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="key" />       //key:开发者申请的key
http://lbsyun.baidu.com/index.php?title=android-locsdk/guide/key申请地址

activity中
 text = (TextView) findViewById(R.id.text);

        mLocationClient = new LocationClient(getApplicationContext());     //声明LocationClient类
        mLocationClient.registerLocationListener(myListener);    //注册监听函数
        initLocation();

        text.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mLocationClient.start();
            }
        });
private void initLocation() {    LocationClientOption option = new LocationClientOption();    option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy    );//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备    option.setCoorType("bd09ll");//可选,默认gcj02,设置返回的定位结果坐标系    int span = 1000;    option.setScanSpan(span);//可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的    option.setIsNeedAddress(true);//可选,设置是否需要地址信息,默认不需要    option.setOpenGps(true);//可选,默认false,设置是否使用gps    option.setLocationNotify(true);//可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果    option.setIsNeedLocationDescribe(true);//可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”    option.setIsNeedLocationPoiList(true);//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到    option.setIgnoreKillProcess(false);//可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死    option.SetIgnoreCacheException(false);//可选,默认false,设置是否收集CRASH信息,默认收集    option.setEnableSimulateGps(false);//可选,默认false,设置是否需要过滤gps仿真结果,默认需要    mLocationClient.setLocOption(option);}

public class MyLocationListener implements BDLocationListener {

    @Override    public void onReceiveLocation(BDLocation location) {        //Receive Location        StringBuffer sb = new StringBuffer(256);        sb.append("time : ");        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());        if (location.getLocType() == BDLocation.TypeGpsLocation) {// GPS定位结果            sb.append("\nspeed : ");            sb.append(location.getSpeed());// 单位:公里每小时            sb.append("\nsatellite : ");            sb.append(location.getSatelliteNumber());            sb.append("\nheight : ");            sb.append(location.getAltitude());// 单位:米            sb.append("\ndirection : ");            sb.append(location.getDirection());// 单位度            sb.append("\naddr : ");            sb.append(location.getAddrStr());            sb.append("\ndescribe : ");            sb.append("gps定位成功");

        } else if (location.getLocType() == BDLocation.TypeNetWorkLocation) {// 网络定位结果            sb.append("\naddr : ");            sb.append(location.getAddrStr());            //运营商信息            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("无法获取有效定位依据导致定位失败,一般是由于手机的原因,处于飞行模式下一般会造成这种结果,可以试着重启手机");        }        sb.append("\nlocationdescribe : ");        sb.append(location.getLocationDescribe());// 位置语义化信息        List<Poi> list = location.getPoiList();// POI数据        if (list != null) {            sb.append("\npoilist size = : ");            sb.append(list.size());            for (Poi p : list) {                sb.append("\npoi= : ");                sb.append(p.getId() + " " + p.getName() + " " + p.getRank());            }        }        Log.i("BaiduLocationApiDem", sb.toString());

        text.setText("我在"+location.getAddrStr());    }

}
 
 
时间: 2024-10-11 23:15:34

百度地图API实现简单的定位功能的相关文章

(百度地图API)v4-2版本定位功能

这几天在看郭霖老师的大作,在百度地图这一张卡的好久,原因是因为百度更新迭代的速度太快了,导致老师的书上的版本已经淘汰又淘汰了,不过还是给了我很多的启发的啊.今晚自己就实现了一下百度地图的定位功能. 百度地图API的什么的,也就不多说了.官网上介绍的也比较详细,还都是中文的,仔细阅读下就行,对了,我用的是v4-2的版本.感觉只有晚上11点以后的工作效率才会翻倍啊,大家有没有这个体会啊,最近想做一款跑步的软件,当然是很简单的那种,做完了会贴上代码和大家来讨论的. 官网链接:http://develo

百度地图API的自动定位和搜索功能(移动端)

近期有个项目涉及到百度地图API,要求做到自动定位和搜索功能.煞费苦心的研究半天,终于能将两个功能合二为一,现将代码贴出来分享给大家,希望你们的砖搬得又快又好.注释不多,具体请参照:http://lbsyun.baidu.com/index.php?title=jspopular 注意:这段代码最好能上传到新浪云等免费空间,用手机打开连接即可看到效果,不然看不到看不到看不到哦. <!DOCTYPE html><html><head> <meta http-equi

Android百度地图API集成二《定位》

书接上回 ↑ 基础地图请查看Android百度地图API集成一<基础地图>: 地址http://www.cnblogs.com/dhr125/p/5969980.html 1.在Application标签中声明SERVICE组件 <service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"> <

百度地图api的简单应用(一):POI检索

使用之前,需要注册一个百度地图开发者账号,最好申请一个认证以获取更高的使用配额和并发上限. 注册之后,申请一个应用,获得一个ak(密钥),并填写ip地址白名单.(这里我使用0.0.0.0/0,查了自己的ip但百度好像总是说我ip不对,算了) 百度地图api的原理是,把你想输入的参数(调用功能.具体参数)体现在url中,把url打开,会返回一个json文件(也可xml文件,但默认json,且方便),这个json文件内包含了你想要的各种信息. 一般最常用的就是poi(point of interes

百度地图api将可视区域定位到当前所在位置

1.前言 开头不说点什么,总是有点不习惯.还是说点什么吧,关于百度地图,我用的次数还是比较多的,没办法,需求呀.好吧,在用百度地图的时候,确实有过很多需求,不过好在百度地图很强大,每次需求在探索后都能满足功能.以后将百度地图中所遇到的一些常见的功能整理一下,也方便一些童鞋参考.我的有一个项目中,就是要一开始将地图的可视区域定位在当前位置.其实很简单,网上一搜一大堆. 2.详情 说的再多,不如贴代码更来的直白.不过使用百度地图,一定要有ak.这个我想没有人不知道吧 1.引入js文件 1 <scri

百度地图api的简单应用(二):轻量级路径规划

同上篇的原理,我们还是输入url,返回json文件. 而由图可见,路径规划返回的json文件内容可能会很多.杂: 因此后续的处理与上篇略有不同. import json import requests feature_data = [] url_0='http://api.map.baidu.com/directionlite/v1/driving?output=json&' ak='你的密钥' origin='31.4,121.4' destination='31.5,121.5' url=u

百度地图API使用介绍

百度地图API 开始学习百度地图API最简单的方式是看一个简单的示例.以下代码创建了一个520x340大小的地图区域并以天安门作为地图的中心: 1. <html> 2. <head> 3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 4. <title>Hello, World</title> 5. <sc

[工具向]__申请,下载,使用百度地图api

前言 api即应用程序接口,在我们的日常开发中,我们不仅可以在开源代码仓库(,github,码云)中获得很大的帮助,在日常开发中占重要地位的另一个东西就是api,我们可以使用众多的第三方编写的优秀的api接口来帮助我们自己的项目开发,我们不需要了解该接口的实现细节,只需要调用其方法即可.百度地图api就是其中之一.前面有说道,我们在gps定位服务的学习上,可以利用百度地图api来开发我们自己的定位导航类app.今天就来记录一下百度地图api的简单上手笔记 使用百度地图开放平台 我们要想使用百度地

xcode5 百度地图api 环境搭建

非原创在http://www.2cto.com/kf/201305/213314.html的基础上稍做修改. 1.官网下载最新的SDK开发包_iOS静态库文件 http://developer.baidu.com/map/sdkiosdev-download.htm 解压后如下: 其中inc是头文件 mapapi.bundle是图片库 Release-iphoneos真机调试所需用到的.a文件 Release-iphonesimulator虚拟机调试所需用到的.a文件 readme是一些版本介绍