百度地图 显示准确的位置
2015-11-30 17:24
369 查看
在应用上使用百度的定位,需要在百度开发者平台上创建应用,来得到自己的key。
怎么生成key呢?首先需要生成一个签名,然后用签名生成sha1,放到百度平台上就可生成key。
![](http://img.blog.csdn.net/20160225102714153?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20160225102721012?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20160225102724684?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
输入keytool -v -list -keystore +你的key的路径 回车
密匙口令即是你的密码
![](http://img.blog.csdn.net/20160225102728326?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20160225102731576?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20160225102734700?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
详细操作见百度上的提示 ,下面是可行的定位需要的步骤。
在百度上下载百度地图的sdk,其中的libs 放在项目中的libs:
libs下载地址:点击打开链接
这里强调一下,libs里面的so包最好全部复制到lib目录下,系统根据适配自动调取相应的。
下载demo:点击打开链接
android studio的话还需要在app下的build.gradle配置so,eclipse不用。
所需要的权限:
服务和key:
MainActivity:
布局:
效果图:
怎么生成key呢?首先需要生成一个签名,然后用签名生成sha1,放到百度平台上就可生成key。
输入keytool -v -list -keystore +你的key的路径 回车
密匙口令即是你的密码
详细操作见百度上的提示 ,下面是可行的定位需要的步骤。
在百度上下载百度地图的sdk,其中的libs 放在项目中的libs:
libs下载地址:点击打开链接
这里强调一下,libs里面的so包最好全部复制到lib目录下,系统根据适配自动调取相应的。
下载demo:点击打开链接
android studio的话还需要在app下的build.gradle配置so,eclipse不用。
sourceSets { main { jniLibs.srcDirs = ['libs'] } }
所需要的权限:
<!-- 这个权限用于进行网络定位 --> <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>
服务和key:
<application ... <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="自己的key" /> ... </application>
MainActivity:
package zhangli.baidumapDemo; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; import android.widget.Toast; import com.baidu.location.BDLocation; import com.baidu.location.BDLocationListener; import com.baidu.location.LocationClient; import com.baidu.location.LocationClientOption; public class MainActivity extends Activity { private LocationClient mLocationClient = null; TextView text; String jiedao; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text = (TextView) findViewById(R.id.Text); MyLocationListenner myListener = new MyLocationListenner(); mLocationClient = new LocationClient(this); LocationClientOption option = new LocationClientOption(); option.setIsNeedAddress(true); option.setAddrType("all"); option.setCoorType("bd09ll"); mLocationClient.setLocOption(option); mLocationClient.registerLocationListener(myListener); mLocationClient.start(); } @Override public void onDestroy() { mLocationClient.stop(); super.onDestroy(); } private class MyLocationListenner implements BDLocationListener { @Override public void onReceiveLocation(BDLocation location) { try { jiedao = location.getAddrStr(); Toast.makeText(getApplicationContext(), jiedao, Toast.LENGTH_LONG).show(); text.setText("目前位置:"+jiedao); } catch (Exception e) { e.printStackTrace(); } } } }
布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="zhangli.baidumapDemo.MainActivity" > <TextView android:id="@+id/Text" android:text="正在定位..." android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:gravity="center" android:ems="10"/> </RelativeLayout>
效果图:
相关文章推荐
- Hadoop Ubuntu安装过程
- JavaScript跨域
- Unity3D 4.0新功能:Mecanim动画系统基础教程
- Android 系统名字、版本、API level的对应关系
- ReactJS学习 相关网站
- 1-2-03:其他基本数据类型存储空间大小
- 1-4-11:晶晶赴约会
- 微信公众号与HTML 5混合模式揭秘5——JSSDK开发技巧1
- MBProgressHUD的基本使用2
- 通过百度地图API定位--第三方开源--百度地图(一)
- Android SDK开发范例大全学习笔记——3.1更改宇显示文字标签
- 第八周项目二:建立链串的算法库
- 【第14周-查找项目1-1——验证折半查找算法】
- 设置搜索关键字高亮
- 【感恩】程序员联盟马上一岁啦
- 十五周 项目2 - 用哈希法组织关键字(2)
- 第9周SHH数据结构-【项目1--猴子选大王(数组版)】 .
- 彻底理解ThreadLocal
- maven
- android局域网通信(二)