我是利用经纬度来解析得到地址的,但是好奇怪哦,
他这个解析不稳定,有时候能返回出地址,有时候却没有。
求高手解决,
我的代码是这样的。
public String getAddress(double lat, double lng) {
String myAddress = "";
StringBuilder sb = new StringBuilder();
Geocoder gc = new Geocoder(mContext, Locale.CHINA);
try {
List<Address> add = gc.getFromLocation(lat / 1E6, lng / 1E6, 5);

StringBuilder bb = new StringBuilder();
if (add.size() > 0) {
Address ad = add.get(0);
bb.append(ad.getAddressLine(0));
bb.append(ad.getAddressLine(1));
bb.append(ad.getAddressLine(2));
sb.append(bb);
}
} catch (Exception e) {
e.printStackTrace();
}
myAddress = sb.toString(); return myAddress;
}

解决方案 »

  1.   

    用Log输出lat和lng的值进行调试判断。
      

  2.   


    问题是有时候有值啊。我也不知道问题出在哪里,我调用的的语句是这样的
    String myAddress = addressUtils.getAddress( (double)( gp.getLatitudeE6() ),(double)( gp.getLongitudeE6() ) );
      

  3.   


    问题是有时候有值啊。我也不知道问题出在哪里,我调用的的语句是这样的
    String myAddress = addressUtils.getAddress( (double)( gp.getLatitudeE6() ),(double)( gp.getLongitudeE6() ) );
      

  4.   

    public String getAddress(double lat, double lng) {
    String myAddress = "";
    System.out.println("lat="+lat+",lng="+lng);
    StringBuilder sb = new StringBuilder();
    Geocoder gc = new Geocoder(mContext, Locale.CHINA);
    try {
    List<Address> add = gc.getFromLocation(lat / 1E6, lng / 1E6, 5);
    System.out.println("add:"+add);
    if ("".equals(add)) {
    System.out.println("---!");
    add = AddressUtils.getaddressLocation(lat / 1E6, lng / 1E6, 3);
    } else {
    ;
    } StringBuilder bb = new StringBuilder();
    if (add.size() > 0) {
    Address ad = add.get(0);
    bb.append(ad.getAddressLine(0));
    bb.append(ad.getAddressLine(1));
    bb.append(ad.getAddressLine(2));
    sb.append(bb);
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    myAddress = sb.toString(); return myAddress;
    }
    在这里调试,他只运行到了第一个输出语句,就是指打印出来 lat 跟 lng 的值,下面add的值没有打印。
      

  5.   

    那就说明List<Address> add = gc.getFromLocation(lat / 1E6, lng / 1E6, 5);这里就出错了e.printStackTrace(); 应该会有输出错误信息的