百度定位

package com.baidu.baidulocationdemo;

import android.content.Context;
import android.util.Log;

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;

/**
 * 获取当前的地址信息: 调用步骤:回调的方式,实现Locationable接口
 */

public class LocationUtility {
	private Context ct;
	public Locationable locationable;
	private LocationClient mLocationClient;
	public MyLocationListener mMyLocationListener;

	public LocationUtility(Context ct, Locationable locationable) {
		this.ct = ct;
		this.locationable = locationable;
	}

	// 设置位置
	public void setLocalMessage() {
		mLocationClient = new LocationClient(ct);
		mMyLocationListener = new MyLocationListener();
		mLocationClient.registerLocationListener(mMyLocationListener);

		initLocation();// 设置定位参数
		mLocationClient.start();// 开始
	}

	
	private void initLocation() {
		LocationClientOption option = new LocationClientOption();
		option.setLocationMode(LocationMode.Hight_Accuracy);// 设置定位模式
		option.setCoorType("gcj02");// 返回的定位结果是百度经纬度,默认值gcj02------>bd09ll
		option.setScanSpan(5000);// 设置发起定位请求的间隔时间为5000ms
		option.setIsNeedAddress(true);// 返回的定位结果包含地址信息
		option.setNeedDeviceDirect(true);// 返回的定位结果包含手机机头的方向
		mLocationClient.setLocOption(option);
	}

	/**
	 * 实现实位回调监听
	 */
	public class MyLocationListener implements BDLocationListener {

		@Override
		public void onReceiveLocation(BDLocation location) {
			// 结果信息,结果的信息都包含在BDLocation类中
			//http://developer.baidu.com/map/loc_refer/index.html
			StringBuffer sb = new StringBuffer(256);
			sb.append("time : ");
			sb.append(location.getTime());//时间
			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) {
				sb.append("\nspeed : ");
				sb.append(location.getSpeed());
				sb.append("\nsatellite : ");
				sb.append(location.getSatelliteNumber());
				sb.append("\ndirection : ");
				sb.append("\naddr : ");
				sb.append(location.getAddrStr());
				sb.append(location.getDirection());
			} else if (location.getLocType() == BDLocation.TypeNetWorkLocation) {
				sb.append("\naddr : ");
				sb.append(location.getAddrStr());
			}

			locationable.setLocationMessage(sb.toString());

			Log.i("BaiduLocationApiDem", sb.toString());
			// 停止客户端访问
			mLocationClient.stop();
		}

	}
	
	//回调函数
	public interface Locationable {
		void setLocationMessage(String str); 
	}

}


调用:<pre name="code" class="html">public class LocationActivity extends Activity implements Locationable {
	private TextView tv;

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

		LocationUtility locationUtility = new LocationUtility(getApplicationContext(), this);
		locationUtility.setLocalMessage();
	}

	@Override
	public void setLocationMessage(String str) {
		tv.setText(str);
	}

}

 


package xgpushdemo.qt.an.appmap; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; 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; import com.baidu.mapapi.SDKInitializer; import com.baidu.mapapi.map.BaiduMap; import com.baidu.mapapi.map.MapView; import com.baidu.mapapi.map.MyLocationData; /*** * 百度定位、导航 * */ public class MainActivity extends Activity { private Button clickbtn; private TextView txt1; private TextView txt2; private MapView mMapView = null; private BaiduMap mBaiduMap=null; //定位相关申明 private LocationClient locationClient; //是否第一次定位 private Boolean isFirstloc=true; //是否开启 private Boolean isStart=true; private String la; private String lo; private String city; public BDLocationListener myListener=new BDLocationListener() { @Override public void onReceiveLocation(BDLocation bdLocation) { if(bdLocation==null||mMapView==null) return; MyLocationData myLocationData= new MyLocationData.Builder().accuracy(bdLocation.getRadius()).direction(100). latitude(bdLocation.getLatitude()).longitude(bdLocation.getLongitude()).build(); mBaiduMap.setMyLocationData(myLocationData); city= bdLocation.getCity(); la=bdLocation.getLatitude()+""; lo=bdLocation.getLongitude()+""; // if(isFirstloc){ // isFirstloc=false; // LatLng ll=new LatLng(bdLocation.getLatitude(),bdLocation.getLongitude()); // MapStatusUpdate mapStatusUpdate= MapStatusUpdateFactory.newLatLngZoom(ll,16); // mBaiduMap.animateMapStatus(mapStatusUpdate); // } } };
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值