2013-05-03 65 views

回答

1

下面是方式,你如何实现它。

 LocationManager locationManager = (LocationManager) context 
        .getSystemService(Context.LOCATION_SERVICE); 
     LocationListener locationListener = new LocationListener() { 
      @Override 
     public void onStatusChanged(String provider, int status, 
       Bundle extras) { 
     } 

     @Override 
     public void onProviderEnabled(String provider) { 
     } 

     @Override 
     public void onProviderDisabled(String provider) { 
     } 

     @Override 
     public void onLocationChanged(Location location) { 
      Double l1 = location.getLatitude(); 
      Double l2 = location.getLongitude(); 
      address = GetAddress(l1, l2);    
     } 
    }; 
    locationManager.requestLocationUpdates(
      LocationManager.NETWORK_PROVIDER, 0, 0, locationListener); 

private String GetAddress(Double lat, Double lon) { 
    Geocoder geocoder = new Geocoder(context, Locale.ENGLISH); 
    String ret = ""; 
    List<Address> addresses = null; 
    try { 
     addresses = geocoder.getFromLocation(lat, lon, 1); 
     if (!addresses.equals(null)) { 
      Address returnedAddress = addresses.get(0); 
      StringBuilder strReturnedAddress = new StringBuilder("\n"); 
      for (int i = 0; i < returnedAddress.getMaxAddressLineIndex(); i++) { 
       strReturnedAddress 
         .append(returnedAddress.getAddressLine(i)).append(
           "\n"); 
      } 
      ret = "Around: " + strReturnedAddress.toString(); 
     } else { 
      ret = "No Address returned!"; 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
     ret = "Location: https://maps.google.co.in/maps?hl=en&q=" + lat 
       + "," + lon; 
    } catch (NullPointerException e) { 
     e.printStackTrace(); 
     ret = lat + "," + lon; 
    } 
    return ret; 
} 

而且还AndroidManifest添加这些权限:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
+0

感谢Harpreet,从上面的代码中我们可以找到当前纬度的地址,但是我的任务是到任何位置的最近的位置,就像我现在得到了一个位置,那么最近的位置就像b,c,d一样。 – 2013-05-03 06:53:54

+0

@ricintech:你可以看到代码片段:Address returnedAddress = addresses.get(0);'。我只是采取谷歌提供的第一个地址,你可以先检查列表的长度,并可以显示所有可用的地址,如果你想获取用户提供的任何位置的地址,那么对于这个代码,你首先需要摆脱它的纬度&lon并将其放入此代码中。 – Harpreet 2013-05-03 07:33:00

+0

这段代码在主线程上做了网络调用的不好的事情。 – 2013-05-03 09:17:41

1

首先获得您的当前位置Lattitude & Longitude,然后让你的每个位置的Lattitude &经度和使用位置类的distanceTo方法您当前的位置找出每个地方的距离,之后找到你的清单了最小距离。

+0

感谢Nirav的快速回复,但我没有预定义的位置,我需要取得最近的位置,我有一个位置的基础上。 – 2013-05-03 06:11:21