2011-04-19 3 views
0

안드로이드 용 GPS 시스템에서 작업 중입니다. 현재 위치의 위도와 경도를 찾을 수 있지만 위도와 경도를 실제 주소로 변환하려고하면 코드가 작동하지 않습니다. 나는 여러 가지 가능성을 시도했다. 여기에 내 코드를 게시했습니다.리버스 지오 코딩을 수행 할 수 없습니다.

도움을 주시면 감사하겠습니다. 감사합니다. .

try { 

     List<Address> addresses = gc.getFromLocation(latitude, longitude, 1); 
     System.out.println(""+latitude); 
     StringBuilder sb = new StringBuilder(); 
     if (addresses.size() > 0) { 

     Address address = addresses.get(0); 
     for (int i = 0; i < address.getMaxAddressLineIndex(); i++) 
     sb.append(address.getAddressLine(i)).append("\n"); 
     sb.append(address.getLocality()).append("\n"); 
     sb.append(address.getPostalCode()).append("\n"); 
     sb.append(address.getCountryName()); 
     } 
     addressString = sb.toString(); 
     } catch (IOException e) {} 
     } else { 
     latLongString = "No location found"; 
     } 
     myLocationText.setText("Your Current Position is:\n" + 
     latLongString + "\n" + addressString); 
     } 

내 문제는 내가 List<Address> addresses = gc.getFromLocation(latitude, longitude, 1); 의 값을 얻을 수있다. 빈 목록 만 반환합니다. 문제가 무엇이고 어떻게 정렬 할 수 있는지 말해 줄 수 있습니까?

+1

위도/경도가 정확한 값입니까? 해당 주소가 있다고 확신하는 곳에 하드 코딩 된 값을 주면 어떻게됩니까? –

+0

@MarvinLabs 너무 하드 코딩 된 값을 시도했다. 그러나 여전히 목록은 비어있다. –

+1

이미 알겠지만 매니페스트 파일에 인터넷 사용 권한을 추가했습니다. – chaitanya

답변

0
Geocoder gc = new Geocoder(ctx, Locale.getDefault()); 
List<Address> addresses; 
addresses = gc.getFromLocation(lat, lng, 1);   
StringBuilder sb = new StringBuilder(); 
if (addresses.size() > 0) 
{ 
    Address address = addresses.get(0); 
    for (int i = 0; i < address.getMaxAddressLineIndex(); i++) 
     sb.append(address.getAddressLine(i)).append(","); 
} 

위치 정보가 표시됩니다. 그러나 때때로 예외는 "Unable to parse the response from server"입니다. 예외를 처리해야합니다. 또한 매니페스트에서 INTERNET permission을 확인하십시오.

+0

안녕하세요. 이미 이미 시도했습니다. 나는 실제로 존재한다면 다른 접근법을 요구하고있었습니다. –

+0

그러면 아마 Google 웹 서비스를 호출하고 – Vansi

+0

webservice 같은 결과를 처리 할 수 ​​있습니다. http://maps.google.com/maps/geo?q=lattitude,longitude&output=csv&sensor=false – Vansi

0

GeoCoder가 빈 목록을 반환하는 경우 장치에서 사용할 수있는 적절한 GeoCoder 구현이 있는지 확인해야합니다 (에뮬레이터 또는 실제 전화).

이 작업은 Geocoder 객체에서 isPresent() 메서드를 사용하여 수행 할 수 있습니다. 에뮬레이터에서 실행되는 경우

http://developer.android.com/reference/android/location/Geocoder.html

또한, 귀하의 AVD 이미지가 구글 API를 사용하여 설정되어 있는지 확인합니다.

관련 문제