如何从地址中查找纬度和经度

时间:2015-02-18 07:34:36

标签: android google-geocoder

我使用Address来获取该位置的纬度和经度,但它总是返回null ...

我正在传递这样的地址:1701 Amphitheatre Pkwy Mountain View CA 94043

Geocoder geocoder = new Geocoder(MainActivity.this, Locale.getDefault());
try {                                                
    List<Address> addresses = geocoder.getFromLocationName(strNewClientCompleteAddress, 1);
    if ((addresses != null) && (addresses.size() > 0)) {
        Address fetchedAddress = addresses.get(0);
        lat = fetchedAddress.getLatitude();
        lng = fetchedAddress.getLongitude();
        Log.v("try-if", "ok great work");
    } else {
        Log.v("try-else", "something wrong");
    }
} catch (IOException e) {
    e.printStackTrace();
    Log.v("catch", "Could not get address....!");
}                           
strLat = String.valueOf(lat);
Log.v("lat:", strLat);
strLng = String.valueOf(lng);
Log.v("lng:", strLng);

日志

V/strNewClientCompleteAddress:(1466): 1701 Amphitheatre Pkwy Mountain View CA 94043
V/try-else(1466): something wrong
V/lat:(1466): 0.0
V/lng:(1466): 0.0

显示权限

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

3 个答案:

答案 0 :(得分:1)

我检查了你的代码,代码没有任何问题。

我得到了以下日志。

02-21 06:21:16.036: V/try-if(18306): ok great work
02-21 06:21:16.036: V/lat:(18306): 37.4235981
02-21 06:21:16.036: V/lng:(18306): -122.0871014

请确保您已在课程下方导入。

import android.location.Address;
import android.location.Geocoder;

Geocoder课程后端仅出现在Google认可的设备上。因此,任何没有GMail / Market / Maps的设备上的查找基本上都会失败。

另外检查互联网是否正在设备中运行..

注意:有时Geocoder服务无法在后台运行,因为它因内存或任务管理器较少而被杀死。它将在重启设备后重新启动。

答案 1 :(得分:0)

  1. 您是否设置了必要的权限,例如:

      

    android.permission.INTERNET对“

  2. 您是否添加了Google Play服务?

  3. 返回Geocoder.isPresent()方法的原因是什么? http://developer.android.com/reference/android/location/Geocoder.html#isPresent%28%29

答案 2 :(得分:0)

另一种方法是使用Google Api https://developers.google.com/places/documentation/autocomplete

直接

,您将获得包含位置的JSON列表。

此方法不依赖于手机上的Play服务,而是使用Maps API密钥