你的位置:首页 > 操作系统

[操作系统]高德地图返回地址详细信息


个人习惯,上图

关于高德地图自动定位返回地址详细信息一直没写,一方面太忙了(也可以说太懒了),另一方面这个地方的内容太少,因为项目后面会用到快速搜索提示,往地图中添加marker.以及导航以及语音提示等等 本来想等项目上线在好好总结一下,算了不想拖了,

上代码:

package com.example.mydemo;

import android.app.Activity;
import android.location.Location;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.TextView;

import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationListener;
import com.amap.api.location.LocationManagerProxy;
import com.amap.api.location.LocationProviderProxy;
import com.amap.api.services.geocoder.GeocodeResult;
import com.amap.api.services.geocoder.GeocodeSearch;
import com.amap.api.services.geocoder.GeocodeSearch.OnGeocodeSearchListener;
import com.amap.api.services.geocoder.RegeocodeResult;

public class MainActivity extends Activity implements
OnGeocodeSearchListener, AMapLocationListener {

// 定位
private LocationManagerProxy mLocationManger;
private TextView mTxt;
private GeocodeSearch geocoderSearch;
  //声明mLocationOption对象
  @Override
  protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

  mTxt = (TextView) findViewById(R.id.tv_txt1);
  initLocation();
  }
  /**
  * 初始化定位
  */
  private void initLocation() {
  // TODO Auto-generated method stub
  mLocationManger = LocationManagerProxy.getInstance(getApplicationContext());
  mLocationManger.requestLocationData(LocationProviderProxy.AMapNetwork,
  60 * 1000, 15, this);
  mHandler.postDelayed(new Runnable() {

  @Override
  public void run() {
  // TODO Auto-generated method stub
  stopLocation();
  }
  }, 15000);// 设置超过15秒还没有定位到就停止定位

  geocoderSearch=new GeocodeSearch(getApplicationContext());
  geocoderSearch.setOnGeocodeSearchListener(this);
  }

  /**
  * 重写方法
  */
  @Override
  public void onLocationChanged(Location location) {
  // TODO Auto-generated method stub

  }
  @Override
  public void onStatusChanged(String provider, int status, Bundle extras) {
  // TODO Auto-generated method stub

  }
  @Override
  public void onProviderEnabled(String provider) {
  // TODO Auto-generated method stub

  }
  @Override
  public void onProviderDisabled(String provider) {
  // TODO Auto-generated method stub

  }
  @Override
  public void onLocationChanged(AMapLocation amapLocation) {
  // TODO Auto-generated method stub
  if (amapLocation != null) {
  Double Latitude = amapLocation.getLatitude();
  Double Longitude = amapLocation.getLongitude();

  Bundle bundle = amapLocation.getExtras();
  String desc = "";
  String cityCode = "";
  if(null!=bundle){
  desc = bundle.getString("desc");
  }
  String str = ("定位成功:(" + Longitude + "," + Latitude + ")"
  + "\n精 度 :" + amapLocation.getAccuracy() + "米"
  + "\n定位方式:" + amapLocation.getProvider() + "\n定位时间:"
  + AMapUtil.convertToTime(amapLocation.getTime()) + "\n城市编码:"
  + cityCode + "\n位置描述:" + desc + "\n省:"
  + amapLocation.getProvince() + "\n市:" + amapLocation.getCity()
  + "\n区(县):" + amapLocation.getDistrict() + "\n区域编码:" + amapLocation
  .getAdCode());
  String address="位置描述:" + desc + "省:"
  + amapLocation.getProvince() + "市:" + amapLocation.getCity()
  + "区(县):" + amapLocation.getDistrict() + "区域编码:" + amapLocation
  .getAdCode();

  String wk= amapLocation.getDistrict();
  Log.i("打印的数据是是是是", address);
  Log.i("打印的数据是是是是", address);
  Log.i("打印的数据是是是是", address);
  Log.i("打印的数据是是是是", address);

  mTxt.setText(wk);
  }
}
@Override
public void onGeocodeSearched(GeocodeResult arg0, int arg1) {
// TODO Auto-generated method stub

}
@Override
public void onRegeocodeSearched(RegeocodeResult arg0, int arg1) {
// TODO Auto-generated method stub

}

private Handler mHandler=new Handler(){
  @Override
  public void handleMessage(Message msg) {
  // TODO Auto-generated method stub
  switch (msg.what) {
  case 0:

  break;

  default:
  break;
  }
}
};
/**
* 销毁定位
*/
private void stopLocation() {
  if (mLocationManger != null) {
  mLocationManger.removeUpdates(this);
  mLocationManger.destory();
  }
  mLocationManger = null;
  }
}

用到了工具类,就不贴了,在demo里面都有:

http://download.csdn.net/detail/onebelowzero2012/9352489

 

注意textview显示文字较长的话宽度设置为match...

注意清单文件的配置权限等问题。

直接用的话 改一下注册的key就可以啦!

另外注意LocationManagerProxy用到Android_Location_V1.3.3.jar及其以上的包才有,关于高德地图官网上自动定位的例子表示很不爽,可能我没找到地方吧,而且高德地图决定关闭论坛,感觉高德地图论坛开着也没啥用,根本帮不上新手忙的,关于高德地图marker,导航等问题后面待续,