【第三方SDK】百度地图实现最简单的定位功能(无地图界面)
在近期的项目中,须要实现无地图界面的定位功能,定位用户所在的城市。因此,本篇文章,主要介绍怎样使用百度地图SDK实现无导航界面的定位功能。
1.申请百度开发人员账户
2.创建应用,获取key
例如以下图所看到的
3.下载SDK文件。并导入至我们的project
以下是我的測试项目的project结构
‘
因此我这里仅仅须要定位,不须要百度地图的其它功能。比方导航等等,所以仅仅导入定位相关的SDK就可以。
4.配置权限和编写代码
详细配置过程,还请參考百度的API说明
地址:http://developer.baidu.com/map/index.php?title=android-locsdk/guide/v4-2
首先是主文件
MainActivity.java
package com.example.justlocation; import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView; 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 TextView tv;
// 定位client类
public LocationClient mLocationClient = null;
// 定位监听器类
public BDLocationListener myListener = new MyLocationListener(); @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.actitity_main);
tv = (TextView) findViewById(R.id.tv);
// 初始化
mLocationClient = new LocationClient(getApplicationContext());
// 设置定位參数
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true); // 打开GPRS
option.setCoorType("bd09ll");// 返回的定位结果是百度经纬度,默认值gcj02
option.setScanSpan(5000); // 设置发起定位请求的间隔时间为5000ms
// 设置获取地址信息
option.setIsNeedAddress(true);
mLocationClient.setLocOption(option);
// 注冊监听函数
mLocationClient.registerLocationListener(myListener);
// 调用此方法開始定位
mLocationClient.start(); } /**
* 定位成功之后的回调函数
*
* @author zhaokaiqiang
*
*/
public class MyLocationListener implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
if (location == null)
return;
StringBuffer sb = new StringBuffer(256);
sb.append("时间 : ");
sb.append(location.getTime());
sb.append("\n返回码 : ");
sb.append(location.getLocType());
sb.append("\n纬度 : ");
sb.append(location.getLatitude());
sb.append("\n经度 : ");
sb.append(location.getLongitude());
sb.append("\n半径 : ");
sb.append(location.getRadius());
sb.append("\n省 : ");
sb.append(location.getProvince());
sb.append("\n市 : ");
sb.append(location.getCity());
if (location.getLocType() == BDLocation.TypeGpsLocation) {
sb.append("\n速度 : ");
sb.append(location.getSpeed());
sb.append("\n卫星数 : ");
sb.append(location.getSatelliteNumber());
}
tv.setText(tv.getText() + "\n" + sb.toString());
}
} }
配置文件
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.justlocation"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="19" /> <!-- 这个权限用于进行网络定位 -->
<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" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" >
</uses-permission>
<!-- 同意应用读取低级别的系统日志文件 -->
<uses-permission android:name="android.permission.READ_LOGS" >
</uses-permission> <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="ngTqhh1a0SF0PnzFfEc853W7" /> <activity
android:name="com.example.justlocation.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity> <service
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote" >
</service>
</application> </manifest>
执行效果就不上图了,由于在真机上。不好截图。
有须要源程序的留邮箱。
【第三方SDK】百度地图实现最简单的定位功能(无地图界面)的更多相关文章
- Android 百度地图开发(二)--- 定位功能之MyLocationOverlay,PopupOverlay的使用
转载请注明出处http://blog.csdn.net/xiaanming/article/details/11380619 这一篇文章主要讲解的是百度地图的定位功能,然后还有MyLocationOv ...
- 使用EXCEL绘制三维地图(超简单的五分钟绘制地图方法,妈妈再也不用担心我不会画地图啦~)
博主为从区域规划转行地图学的小学渣一枚,最近处理数据希望对结果进行三维可视化,意外发现从小用到大的EXCEL可以绘制地图且功能非常强大,在这里做一下简单介绍,希望可以给看官提供些许帮助.那下面就开始吧 ...
- 地图之CLLocationManager的使用 定位功能使用
1.iOS8曾经使用CLLocationManager 1.导入头文件 <CoreLocation/CoreLocation.h> 2.创建位置管理者 CLLocationManager ...
- Android 百度地图 SDK v3.0.0 (二) 定位与结合方向传感器
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37730469 在上一篇博客中,我们成功把地图导入了我们的项目.本篇我们准备为地图 ...
- IOS定位核心与地图
IOS定位核心与地图 Core Location以及Map框架包通常能给我们的应用程序添加定位和地图相关的服务.Core Location框架包通常是使用硬件设备来进行 ...
- Android高效率编码-第三方SDK详解系列(一)——百度地图,绘制,覆盖物,导航,定位,细腻分解!
Android高效率编码-第三方SDK详解系列(一)--百度地图,绘制,覆盖物,导航,定位,细腻分解! 这是一个系列,但是我也不确定具体会更新多少期,最近很忙,主要还是效率的问题,所以一些有效的东西还 ...
- [转贴]JAVA 百度地图SDK地图学习——实现定位功能
之前已经完成了百度地图SDK和百度定位SDK的配置. http://my.oschina.net/u/1051634/blog/180880 实现百度定位的功能,最好仔细看看官方的文档,看了好几次才有 ...
- android菜鸟学习笔记31----Android使用百度地图API(二)获取地理位置及地图控制器的简单使用
1.获取当前地理位置: Android中提供了一个LocationManager的类,用于管理地理位置.不能通过构造函数获取该类的实例,而是通过Context的getSystemService(): ...
- 使用【百度云推送】第三方SDK实现推送功能具体解释
之前介绍过怎样使用shareSDK实现新浪微博分享功能,今天介绍怎样使用百度云推送SDK实现Android手机后台推送功能. 执行效果例如以下 第一步,假设使用百度的SDK,当然要先成为百度的开发人员 ...
随机推荐
- 在windows下完美安装GitHub
笔者最近在Windows下安装GitHub,过程中遇到不少问题.现在把安装的详细步骤分享给大家,免得大家走弯路. 笔者安装了GitHub for Windows程序,一切都运行顺利.但事情没有结束,首 ...
- struts2页面输出错误信息
<package name="user" namespace="/user" extends="struts-default"> ...
- DIV+CSS解决IE6,IE7,IE8,FF兼容问题(转至http://www.douban.com/note/163291324/)
2011-07-25 21:11:47 DIV+CSS解决IE6,IE7,IE8,FF兼容问题 1.IE8下兼容问题,这个最好处理,转化成IE7兼容就可以.在头部加如下一段代码,然后只要在IE ...
- JavaWeb解释一下什么是 servlet?
Servlet是一种独立于平台和协议的服务端的java技术,可以生成动态WEB页面与传统的CGI(计算机图形接口)和其他类似的CGI技术相比.Servlet具有更好的可移植性.更强大的功能,更少的投资 ...
- 面试题之java 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 要求不能出现截半的情况
题目:10. 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串. 但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输 ...
- LNMP 基于域名的虚拟主机配置 (Centos5.6)
. . server { listen ; #listen [::]: default_server ipv6only=on; server_name www.blog.com; index inde ...
- [C++ Basic]C++与Java的主要区别
1.编译运行 java是解释性语言,java程序在运行时类加载器从类路经中加载相关的类,然后java虚拟机读取该类文件的字节,执行相应操作.而C++编译的 时候将程序编译成本地机器码.一般来说java ...
- JAVA GUI学习 - 窗口【x】按钮关闭事件触发器:重写processWindowEvent(WindowEvent e)方法
public class WindowListenerKnow extends JFrame { public WindowListenerKnow() { this.setBounds(300, 1 ...
- C++那些库
在C++中,库的地位是非常高的. 基础库 boost“准”标准库 boost库是经过千锤百炼,可移植提供源代码的C++库,作为标准库的后备.跨平台的.有一个大的C++社区支持 Boost中比较著名的库 ...
- JavaScript推断E-mail地址是否合法
编写自己定义的JavaScript函数checkEmail(),在该函数中首先推断E-mail文本框是否为空,然后在应用正則表達式推断E-mail地址是否合法,假设不合法提示用户 <script ...