我正在写一个需要找到当前位置的应用程序。代码正确返回了纬度和经度,但没有返回真实地址(反向地理编码) 可能有什么问题。 有人请帮忙,我是android的新手。 我正在使用android 4.0在模拟器上进行测试 从onLocationChanged(位置loc)方法
调用updateWithNewLocation() void updateWithNewLocation(Location location)
{
if (location != null)
{
double lat = 29.00;//location.getLatitude();
double lng = 77.0;//location.getLongitude();
longitudeLattitudeString="Lattitude :"+lat+" Longitude :"+lng;
Geocoder gc = new Geocoder(this, Locale.getDefault());
try
{
List<Address> addresses = gc.getFromLocation(lat, lng, 1);
StringBuilder sb = new StringBuilder();
//Toast.makeText(this, "Problem1", 2000).show();
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");
Toast.makeText(this, "Problem2", 2000).show();
sb.append(address.getPostalCode()).append("\n");
sb.append(address.getCountryName());
}
else
{
addressString=" No Location";
//Toast.makeText(this, "Problem3", 2000).show();
}
addressString = sb.toString();
}
catch (IOException e)
{
//Toast.makeText(thisContext, "Problem : InCatch", 2000).show();
}
}
else
{
longitudeLattitudeString = "No location found";
}
}
答案 0 :(得分:3)
反向地理编码不适用于模拟器,在设备上进行测试。
答案 1 :(得分:0)
public static String getUserLocation(String lat, String lon) {
String userlocation = null;
String readUserFeed = readUserLocationFeed(lat.trim() + ","+ lon.trim());
try {
JSONObject Strjson = new JSONObject(readUserFeed);
JSONArray jsonArray = new JSONArray(Strjson.getString("results"));
userlocation = jsonArray.getJSONObject(1)
.getString("formatted_address").toString();
} catch (Exception e) {
e.printStackTrace();
}
Log.i("User Location ", userlocation);
return userlocation;
}
public static String readUserLocationFeed(String address) {
StringBuilder builder = new StringBuilder();
HttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet("http://maps.google.com/maps/api/geocode/json?latlng="+ address + "&sensor=false");
try {
HttpResponse response = client.execute(httpGet);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
if (statusCode == 200) {
HttpEntity entity = response.getEntity();
InputStream content = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(content));
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
}
} else {
Log.e(ReverseGeocode.class.toString(), "Failed to download file");
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return builder.toString();
}