根据地名显示位置,而不是使用位置的经度和纬度

时间:2013-12-18 04:29:48

标签: android google-maps

我想在我的Android应用程序的地图中显示一个特定的地方,我能够使用这个地方的经度和纬度在地图上显示它。然而,信息泡沫没有指向该地方,而是指向基于经度和纬度的位置。

我想在给定位置显示特定位置。

这是我的代码

double latitude = some value;
double longitude = some value;
String label = "Some text";
String loc = "geo:" + latitude + "," + longitude;
String query = latitude + "," + longitude + "(" + label + ")";
String encodedQuery = Uri.encode(query);
String uriLoc = loc + "?q=" + encodedQuery + "&z=16";
Log.d(uriLoc, "no log");
Uri uri = Uri.parse(uriLoc);
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, uri);
startActivity(intent);

3 个答案:

答案 0 :(得分:1)

您应该可以使用地理编码器执行此操作:http://developer.android.com/reference/android/location/Geocoder.html

答案 1 :(得分:1)

作为suggested by user370305

Geocoder geocoder;
List<Address> addresses;
geocoder = new Geocoder(this, Locale.getDefault());
addresses = geocoder.getFromLocation(latitude, longitude, 1);

String address = addresses.get(0).getAddressLine(0);
String city = addresses.get(0).getAddressLine(1);
String country = addresses.get(0).getAddressLine(2);

答案 2 :(得分:0)

我可以使用getFromLocationName()方法中的地名来提取正确的经度和纬度值。

代码

Geocoder geocoder;
List<Address> addresses = null;
geocoder = new Geocoder(this, Locale.getDefault());
try {
//getFromLocationName returns array of address, it takes 2 parameter one place name and count of result
    addresses = geocoder.getFromLocationName("Place name", 1);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

latitude = addresses.get(0).getLatitude();
longitude = addresses.get(0).getLongitude();
String label = "SomePlace";
String in = "geo:" + latitude + "," + longitude;
String query = latitude + "," + longitude + "(" + label + ")";
String ey = Uri.encode(query);
String uriLoc = in + "?q=" + ey+ "&z=16";
Log.d(uriLoc, "no log");
Uri uri = Uri.parse(uriLoc);
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, uri);
startActivity(intent);