基于百度地图的GPS简单定位——详细注释

基于百度地图的GPS简单定位——详细注释

     由于开发需要,简单学习了基于百度地图的GPS定位,实现了获取当地经纬度及详细地址。并附有官方demo。需要注意的是,必须先注册百度开发者账号,(http://developer.baidu.com),然后获取API Key (http://developer.baidu.com/map/index.php?title=android-locsdk)。将获得的API Key写入AndroidManifest.xml文件。

先来看效果图:






工程目录如下:(注意导入libs,由于空间有限,布局文件没显示,分别为activity_main.xml和location.xml)

具体代码如下:

1、MainActivity.java

package com.android.baidugps;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
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 static final String TAG = "BaiduGPS";
		private TextView locationInfoTextView = null;
		private TextView latitudeTextView = null;
		private TextView longitudeTextView = null;
	    private Button startButton , secondButton;
	    private LocationClient mLocationClient = null;
	     
	    @Override
	    public void onCreate(Bundle savedInstanceState) {
	        super.onCreate(savedInstanceState);
	        setContentView(R.layout.activity_main);
	        
	        /*
	         * 
	         * 
	         */
	        secondButton = (Button)findViewById(R.id.secondActivity);
	        secondButton.setOnClickListener(new OnClickListener() {
				
				@Override
				public void onClick(View v) {
					// TODO Auto-generated method stub
					Intent i = new Intent(MainActivity.this, MyActivityTest.class);
					startActivity(i);
				}
			});
	        
	        
	         
	        locationInfoTextView = (TextView) this.findViewById(R.id.addrText);
	        latitudeTextView = (TextView) this.findViewById(R.id.latiText);
	        longitudeTextView = (TextView) this.findViewById(R.id.longText);
	        startButton = (Button) this.findViewById(R.id.getButton);
	        
	        mLocationClient = ((LocationApplication)getApplication()).mLocationClient;
	        ((LocationApplication)getApplication()).mLocationResult = locationInfoTextView;
//	        mLocationClient = new LocationClient(this);  
	        LocationClientOption option = new LocationClientOption();  
	        option.setOpenGps(true);        // 打开gps  
	        option.setCoorType("bd09ll");   // 设置坐标类型,总共有几个类型具体的可以查看百度文档说明  
	        option.setScanSpan(20000);      // 设置定位间隔时间  
	        option.setAddrType("all");      // 设置返回类型,all = 表示返回所有的数据  
	        option.setProdName("施肥专家"); //设置产品线名称。
	        									//强烈建议您使用自定义的产品线名称,方便我们以后为您提供更高效准确的定位服务。
//	        option.setPriority(LocationClientOption.NetWorkFirst);    
	        mLocationClient.setLocOption(option);  
	          
	        mLocationClient.registerLocationListener(new BDLocationListener() {  
	              
	            @Override  
	            public void onReceiveLocation(BDLocation location) {  
	                if(location == null)  
	                    return;  
	                Log.i(TAG, "定位当前位置成功!");  
	                String city = location.getAddrStr();  
	                System.out.println(TAG + location.getStreet());    //街道
	                System.out.println(TAG+ location.getStreetNumber());  
	                System.out.println(TAG + location.getAddrStr());  //完整地址
	                System.out.println(TAG + location.getAltitude());  
	                System.out.println(TAG + location.getCity());  
	                System.out.println(TAG + location.getCityCode());  
	                System.out.println(TAG + location.getCoorType());  
//	                System.out.println(TAG + location.getDerect());  
	                System.out.println(TAG + location.getDistrict());  //地区
	                System.out.println(TAG + location.getProvince());  
	                System.out.println(TAG + location.getSatelliteNumber());  
	                System.out.println(TAG + location.getSpeed());  
//	                String ownerLocation = location.getAddrStr();  
	                String ownerLatitude = String.valueOf(location.getLatitude());  
	                String ownerLongtitude = String.valueOf(location.getLongitude());
	                locationInfoTextView.setText("城市:" + city);
	                latitudeTextView.setText("纬度为:" + ownerLatitude);
	                longitudeTextView.setText("经度为:" + ownerLongtitude);
	              
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值