android通过百度地图获取经纬度和具体地址。
官方网站上就有Demo,http://developer.baidu.com/map/index.php?title=androidsdk
可以参考,打开定位的demo,把它的
1.jar包导入,
2.在AndroidManifest中
a.把uses-permission复制进去,
b.申请key~并复制<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="输入你的key" />
c.因为自己定义了类继承Application,所以在Application处加上
android:name="自己定义的类名~"
3.就可以写代码了。
MainActivity:
public class MainActivity extends Activity{ private LocationClient mLocationClient; //显示城市 private TextView LocationResult; //开始按钮 private Button startLocation; public void init(){ startLocation = (Button)findViewById(R.id.addfence); LocationResult = (TextView)findViewById(R.id.textView1); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.location); init(); mLocationClient = ((LocationApplication)getApplication()).mLocationClient; //调用LocationApplication,获得需要的信息 ((LocationApplication)getApplication()).mLocationResult = LocationResult; startLocation.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub InitLocation(); mLocationClient.start(); } } }); } @Override protected void onStop() { mLocationClient.stop(); super.onStop(); } private void InitLocation(){ LocationClientOption option = new LocationClientOption(); option.setLocationMode(LocationMode.Hight_Accuracy);//设置定位模式 //LocationMode.Hight_Accuracy 高精度定位模式下,会同时使用GPS、Wifi和基站定位,返回的是当前条件下精度最好的定位结果 option.setCoorType("gcj02");//返回的定位结果是百度经纬度,默认值gcj02 //可选项:"gcj02"国策局加密经纬度坐标 //"bd09ll"百度加密经纬度坐标 //"bd09"百度加密墨卡托坐标 option.setIsNeedAddress(true);//反编译获得具体位置,只有网络定位才可以 mLocationClient.setLocOption(option); } }
LocationAplication类:
public class LocationApplication extends Application { public LocationClient mLocationClient;//定位SDK的核心类 public MyLocationListener mMyLocationListener;//定义监听类 public TextView mLocationResult,logMsg; public static String city=null; @Override public void onCreate() { super.onCreate(); mLocationClient = new LocationClient(this.getApplicationContext()); mMyLocationListener = new MyLocationListener(); mLocationClient.registerLocationListener(mMyLocationListener); } /** * 实现实位回调监听 */ public class MyLocationListener implements BDLocationListener { @Override public void onReceiveLocation(BDLocation location) { //Receive Location if(location.getCity()!=null){ city=location.getCity(); } StringBuffer sb = new StringBuffer(256); if (location.getLocType() == BDLocation.TypeGpsLocation){//定位结果描述:GPS定位结果 sb.append(city);//地理位置 } else if (location.getLocType() == BDLocation.TypeNetWorkLocation){//定位结果描述:网络定位结果 sb.append(city); } logMsg(sb.toString()); } } /** * 显示请求字符串 * @param str */ public void logMsg(String str) { try { if (mLocationResult != null) mLocationResult.setText(str); } catch (Exception e) { e.printStackTrace(); } } }