基于百度地图实现的实时定位功能(含项目代码)

这段时间经常接触百度地图API,每次用的时候都会重新下demo,确实浪费时间。今天有时候就整理一下代码。博文底部有项目代码链接。

以下贴出来的是百度的定位功能的实现:
先看看效果:
[img]http://dl2.iteye.com/upload/attachment/0093/9287/b9ab4383-f689-3153-b630-069a377a3fbf.png[/img]

[size=large][color=red]MyApplication.class:[/color][/size]
package com.liucanwen.baidulocation;

import android.app.Application;
import android.content.Intent;
import android.os.Process;
import android.util.Log;

import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.GeofenceClient;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;

public class MyApplication extends Application
{
public LocationClient mLocationClient = null;
public GeofenceClient mGeofenceClient;
public MyLocationListenner myListener = new MyLocationListenner();
public static String TAG = "MyApplication";

private static MyApplication mInstance = null;

@Override
public void onCreate()
{
mInstance = this;

mLocationClient = new LocationClient(this);

/**
* 项目的key,自己到官网申请 http://lbsyun.baidu.com/apiconsole/key
*/
mLocationClient.setAK("0zY5wx1STQSzyaNv4Tvr7z0R");
mLocationClient.registerLocationListener(myListener);
mGeofenceClient = new GeofenceClient(this);

super.onCreate();
Log.d(TAG, "... Application onCreate... pid=" + Process.myPid());
}

public static MyApplication getInstance()
{
return mInstance;
}

/**
* 停止定位
*/
public void stopLocationClient()
{
if (mLocationClient != null && mLocationClient.isStarted())
{
mLocationClient.stop();
}
}

/**
* 发起定位
*/
public void requestLocationInfo()
{
setLocationOption();

if (mLocationClient != null && !mLocationClient.isStarted())
{
mLocationClient.start();
}

if (mLocationClient != null && mLocationClient.isStarted())
{
mLocationClient.requestLocation();
}
}

/**
* 设置相关参数
*/
private void setLocationOption()
{
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true); // 打开gps
option.setCoorType("bd09ll"); // 设置坐标类型
option.setServiceName("com.baidu.location.service_v2.9");
option.setPoiExtraInfo(true);
option.setAddrType("all");
option.setPoiNumber(10);
option.disableCache(true);
mLocationClient.setLocOption(option);
}

/**
* 监听函数,有更新位置的时候,格式化成字符串,输出到屏幕中
*/
public class MyLocationListenner implements BDLocationListener
{
@Override
public void onReceiveLocation(BDLocation location)
{
if (location == null)
{
sendBroadCast("定位失败!");
return;
}
sendBroadCast(location.getAddrStr());
}

public void onReceivePoi(BDLocation poiLocation)
{
if (poiLocation == null)
{
sendBroadCast("定位失败!");
return;
}
sendBroadCast(poiLocation.getAddrStr());
}

}

/**
* 得到发送广播
* @param address
*/
public void sendBroadCast(String address)
{
stopLocationClient();

Intent intent = new Intent(MainActivity.LOCATION_BCR);
intent.putExtra("address", address);
sendBroadcast(intent);
}
}


[size=large][color=red]MainActivity.class:[/color][/size]
package com.liucanwen.baidulocation;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity
{
private BroadcastReceiver broadcastReceiver;
public static String LOCATION_BCR = "location_bcr";

private Button locBtn;
private TextView locInfo;

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

initialize();

initializeViews();

initializeListeners();
}

private void initialize()
{
registerBroadCastReceiver();
}

private void initializeViews()
{
locBtn = (Button) findViewById(R.id.location);
locInfo = (TextView) findViewById(R.id.location_info);
}

private void initializeListeners()
{
locBtn.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
locInfo.setText("定位中...");

MyApplication.getInstance().requestLocationInfo();
}
});
}

/**
* 注册一个广播,监听定位结果
*/
private void registerBroadCastReceiver()
{
broadcastReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
String address = intent.getStringExtra("address");

locInfo.setText(address);
}
};
IntentFilter intentToReceiveFilter = new IntentFilter();
intentToReceiveFilter.addAction(LOCATION_BCR);
registerReceiver(broadcastReceiver, intentToReceiveFilter);
}

@Override
protected void onDestroy()
{
super.onDestroy();
unregisterReceiver(broadcastReceiver);
}

}


源代码下载:
[url]http://download.csdn.net/detail/qq15989177612/6930569[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值