【问题标题】:Convert coordinates to address with geocoder使用地理编码器将坐标转换为地址
【发布时间】:2015-04-19 08:47:50
【问题描述】:

我一直在尝试使用地址将坐标值从TextView 转换为Toast,但在标有-> 的行中出现错误。代码:

public void test() throws IOException {
    TextView inicioLat = (TextView) findViewById(R.id.eInicioLat);
    double tmp1 = Double.parseDouble(inicioLat.getText().toString());
    TextView inicioLong = (TextView) findViewById(R.id.eInicioLong);
    double tmp2 = Double.parseDouble(inicioLong.getText().toString());
 -> Geocoder geocoder = new Geocoder(this, Locale.getDefault());
    List<Address> addresses;
    addresses = geocoder.getFromLocation(tmp1, tmp2, 1);
    Toast.makeText(this, (CharSequence) addresses,Toast.LENGTH_LONG).show();
}

堆栈跟踪:

04-19 09:41:26.303  31020-31020/? E/Zygote﹕ MountEmulatedStorage()
04-19 09:41:26.303  31020-31020/? E/Zygote﹕ v2
04-19 09:41:26.323  31020-31020/? E/SELinux﹕ [DEBUG] get_category: variable seinfo: default sensitivity: NULL, cateogry: NULL
04-19 09:41:30.493  31020-31020/greetrack.estg.ipvc.greentrack E/ViewRootImpl﹕ sendUserActionEvent() mView == null
04-19 09:41:35.003  31020-31020/greetrack.estg.ipvc.greentrack E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: greetrack.estg.ipvc.greentrack, PID: 31020
    java.lang.IllegalStateException: Could not execute method of the activity
            at android.view.View$1.onClick(View.java:4221)
            at android.view.View.performClick(View.java:5155)
            at android.view.View$PerformClick.run(View.java:20747)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:145)
            at android.app.ActivityThread.main(ActivityThread.java:5832)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
     Caused by: java.lang.reflect.InvocationTargetException
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at android.view.View$1.onClick(View.java:4216)
            at android.view.View.performClick(View.java:5155)
            at android.view.View$PerformClick.run(View.java:20747)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:145)
            at android.app.ActivityThread.main(ActivityThread.java:5832)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
     Caused by: java.lang.IllegalArgumentException: latitude == 225.0
            at android.location.Geocoder.getFromLocation(Geocoder.java:126)
            at greetrack.estg.ipvc.greentrack.Adicionar.test(Adicionar.java:96)
            at greetrack.estg.ipvc.greentrack.Adicionar.locInicio(Adicionar.java:60)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at android.view.View$1.onClick(View.java:4216)
            at android.view.View.performClick(View.java:5155)
            at android.view.View$PerformClick.run(View.java:20747)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:145)
            at android.app.ActivityThread.main(ActivityThread.java:5832)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)

我已经创建了manifest 中的权限。

【问题讨论】:

  • 您需要使用地址的循环或索引0,因为它是地址类型的列表
  • 放 log.e("Latitude",""+tmp1);log.e("Longitude",""+tmp2);检查您传递给 getFromLocation() 的值。

标签: android google-maps geolocation


【解决方案1】:

你得到了

java.lang.IllegalArgumentException: 纬度 == 225.0

这是因为getFromLocation()不取经纬度-90以下90以上-180以下 或超过 180

查看谷歌文档here

根据您想要的精度将您的值除以 10^6(1M) 或更高的值。

【讨论】:

    猜你喜欢
    • 2012-05-21
    • 2012-07-04
    • 1970-01-01
    • 2021-03-17
    • 2023-04-04
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多