我正在尝试获取当前位置的街道名称,但我似乎无法得到它。
我使用此方法检索地址:
public Address getAddressForLocation(Context context, Location location) throws IOException {
if (location == null) {
return null;
}
double latitude = location.getLatitude();
double longitude = location.getLongitude();
int maxResults = 1;
Geocoder gc = new Geocoder(context, Locale.getDefault());
List<Address> addresses = gc.getFromLocation(latitude, longitude, maxResults);
if (addresses.size() == 1) {
return addresses.get(0);
} else {
return null;
}
}
然后我可以做类似的事情。 address.getLocality()
和address.getPostalCode()
但我想要的是街道名称。就像在“Potterstreet 12”中一样。当我打印AddressLine(0)和AddressLine(1)时,我只获得邮政编码,城市和国家。
如何检索我目前所处位置的街道名称?
答案 0 :(得分:14)
您是否尝试过使用getAddressLine
?
有关此方法的详细信息,请参阅here
这样的事情应该做(未经测试):
for (int i = 0; i < addresses.getMaxAddressLineIndex(); i++) {
Log.d("=Adress=",addresses.getAddressLine(i));
}
答案 1 :(得分:9)
在你的代码中尝试这样的事情
String cityName=null;
Geocoder gcd = new Geocoder(getBaseContext(),Locale.getDefault());
List<Address> addresses;
try {
addresses = gcd.getFromLocation(location.getLatitude(), location
.getLongitude(), 1);
if (addresses.size() > 0)
StreetName=addresses.get(0).getThoroughfare();
String s = longitude+"\n"+latitude +
"\n\nMy Currrent Street is: "+StreetName;
Toast.makeText(getApplicationContext(), s, Toast.LENGTH_LONG).show();
它对我有用:-)祝你好运; - )
答案 2 :(得分:1)
getFromLocation也不适合我。您可以采取几个步骤。
1.首先进入gradle并确保使用最新的游戏服务库。
不要说明,我没有结果的原因是因为我的地址中有很多信息。当我删除邮政编码时,我每次都得到结果。
3.尝试在线api:
http://maps.google.com/maps/api/geocode/json?address=192%20McEwan%20Dr%20E,%20Caledon,%20ON&sensor=false
只需用你的地址替换那里的地址。
答案 3 :(得分:0)
我有一个非常类似的问题,但是使用国家名称,这是我最终使用的功能:
function getCountry(results) {
var geocoderAddressComponent,addressComponentTypes,address;
for (var i in results) {
geocoderAddressComponent = results[i].address_components;
for (var j in geocoderAddressComponent) {
address = geocoderAddressComponent[j];
addressComponentTypes = geocoderAddressComponent[j].types;
for (var k in addressComponentTypes) {
if (addressComponentTypes[k] == 'country') {
return address.long_name;
}
}
}
}
return 'Unknown';
}
你应该能够适应这一点,以便毫不费力地获得街道名称。
答案 4 :(得分:-3)
Geocoder gcd = new Geocoder(this, Locale.getDefault());
List<Address> addresses =
gcd.getFromLocation(currentLatitude, currentLongitude,100);
if (addresses.size() > 0 && addresses != null) {
StringBuilder result = new StringBuilder();
myaddress.setText(addresses.get(0).getFeatureName()+"-"+addresses.get(0).getLocality()+"-"+addresses.get(0).getAdminArea()+"-"+addresses.get(0).getCountryName());
}
那就是全部..!