【问题标题】:Geocoder not working by getfromlocationName地理编码器无法通过 getfromlocationName 工作
【发布时间】:2011-01-24 09:25:24
【问题描述】:

我的代码如下:

Geocoder geocoder = new Geocoder(this,Locale.UK );
         List<Address> addresses = null;
         Toast.makeText(displaybyName.this, "country: before " , Toast.LENGTH_SHORT).show(); 
   try {
    Toast.makeText(displaybyName.this, "country: before " , Toast.LENGTH_SHORT).show(); 

    addresses = geocoder.getFromLocationName( 
      "Camden", 1);

    if (addresses.size() > 0) {

           geopoint = new GeoPoint(
                         (int) (addresses.get(0).getLatitude() * 1E6), 
                         (int) (addresses.get(0).getLongitude() * 1E6));

           //Animating on display

           mapcontroller.animateTo(geopoint);
           mapcontroller.setZoom(5); 
           mapview.invalidate();
          } 


   } catch (IOException io) {
    // TODO Auto-generated catch block
    Toast.makeText(displaybyName.this, "Connection Error", Toast.LENGTH_SHORT).show();
   }

   if (addresses.size() > 0) {

          geopoint = new GeoPoint(
                        (int) (addresses.get(0).getLatitude() * 1E6), 
                        (int) (addresses.get(0).getLongitude() * 1E6));

          //Animating on display

          mapcontroller.animateTo(geopoint);
          mapcontroller.setZoom(5); 
          mapview.invalidate();
         } 

但是,应用程序每次都会崩溃。地理编码器未返回任何纬度/经度。

代码有什么问题吗...请指教。

【问题讨论】:

  • “崩溃” - 我们需要有关失败的更多详细信息(描述、堆栈跟踪......)
  • 你真的需要在你的 LogCat 窗口中找到错误(在 DDMS 透视图上,如果你不能看到它)
  • 另外,你似乎重复了你的 IF 逻辑,一次在 try-catch 内,一次在之后。

标签: java google-geocoder


【解决方案1】:

仔细检查

addresses = geocoder.getFromLocationName("Camden", 1);

返回不是 null 的东西 - 否则:以下行将引发 NullPointerException


进一步阅读

【讨论】:

  • 谢谢,我尝试了几个不同的地址,但我的应用程序仍然崩溃。我已经检查了 Manifest 文件的权限,它似乎没问题。我有一些来自伦敦市的地址,需要获取它的坐标才能在地图上显示它。有没有其他方法可以做到这一点,因为地理编码器功能不起作用。
  • 尝试从地址中获取坐标时,程序在模拟器上崩溃。我看不到错误。 Geocoder 类需要一个不包含在核心 android 框架中的后端服务。 Sooo,我现在很困惑。我必须调用、导入、添加、在代码中使用什么......才能完成这项工作?我正在使用 Google Api2.2,Api 级别 8。如果有人找到了解决方案或文档指针,我没有发现,请告诉我们。感谢您的宝贵时间。
【解决方案2】:

存在 android 版本问题,因为 geocoder 没有附带核心 android 框架,但这在 1.6、2.0 和 API 级别 15 等新旧版本上都可以正常工作,首先尝试这些肯定会工作,但仍然坚持只是试试你的 使用 JSON 的自己的地理编码器类。

【讨论】:

    猜你喜欢
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多