[置顶] 基于百度地图定位SDK实现定位

时间:2022-09-04 10:54:49

转载请注明出处:http://blog.csdn.net/u010214991/article/details/48491857

一、创建应用

要使用百度地图的一些功能,比如定位功能的实现,就必须首先注册一个百度开发者帐号,然后到http://lbsyun.baidu.com/apiconsole/key创建应用,申请开发中在你的程序的AndroidManifest配置文件所需要填写的key;创建应用时首先填写好应用名称和应用类型,填写过程中最值得注意的就是安全码了,事实上在该填写项下面已经标明安全码的填写格式,那就是:数字签名+;+包名。注意这里的分号是英文的分号,数字签名是你的eclispe中所用签名证书的SHA1值,注意不要填写成MD5值了,包名就是你项目中的包名,注意你在这里填写的包名必须与你项目中的包名一致,可在AndroidManifest查看package。以下是获取SHA1值的图示:

打开eclipse的preferences菜单,在Android下的【Build】中可以看到SHA1的值,如下图:[置顶]        基于百度地图定位SDK实现定位


二、导入用于定位的jar包

我下载的是locSDK_6.11.jar,你到百度开发者官网下载,下载后解压将jar连同里面装.so的文件的文件夹一起导入到你工程的libs文件中。

用于定位的SDK的下载地址http://developer.baidu.com/map/index.php?title=android-locsdk/geosdk-android-download


[置顶]        基于百度地图定位SDK实现定位


三、配置AndroidManifest.xml文件


1、添加以下权限

 <!-- 百度API所需权限 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />

2、在AndroidManifest的Application标签内添加以下代码

 <meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="填你在百度开发平台创建的应用AK" />

下面我的整个配置文件的内容,其实就是按照上面添加东西而已,可以跳过不看。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.map"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />

<!-- 百度API所需权限 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.map.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>

<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="l0EZ3U9L4qG38WIPNOdrUvtx" />
</application>

</manifest>


四、MainActivity.java

<pre name="code" class="java">import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.location.LocationClientOption.LocationMode;
import com.example.dingwei.R;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;

public class MainActivity extends Activity {

private TextView textView;
private LocationClient locationClient = null;// 定位SDK的核心类
private String tempcoor = "gcj02";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.textView1);

locationClient = new LocationClient(getApplicationContext());// 初始化定位对象
locationClient.registerLocationListener(bdLocationListener);// 注册定位监听器

// 定位前的准备工作
initLocation();

locationClient.start();// 开始定位
locationClient.requestLocation();
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
if (locationClient != null) {
locationClient.unRegisterLocationListener(bdLocationListener);
locationClient = null;
}
}
public void initLocation() {

LocationClientOption option = new LocationClientOption();
option.setLocationMode(LocationMode.Hight_Accuracy);// 高精度定位模式
option.setCoorType(tempcoor);// 国测局加密经纬度坐标
option.setScanSpan(0);
option.setIsNeedAddress(true);
option.setOpenGps(true);
option.setLocationNotify(true);// 可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果
option.setIgnoreKillProcess(true);
locationClient.setLocOption(option);

}

BDLocationListener bdLocationListener = new BDLocationListener() {

@Override
public void onReceiveLocation(BDLocation location) {
// TODO Auto-generated method stub
if (location == null) {
return;
}

textView.setText("radius:" + location.getRadius() + ";"
+ "latitute:" + location.getLatitude() + ";"
+ "longtitute:" + location.getLongitude() + ";"
+ "address:" + location.getAddrStr());

}
};



}

 

五、activity_main.xml

<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=".MainActivity" >


<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="无法获取当前位置,请重试" />

</RelativeLayout>


好了,到这里简单的定位功能讲解就结束了,咱们下期见。 [置顶]        基于百度地图定位SDK实现定位