現在地のストリート名を取得しようとしていますが、取得できないようです。
このメソッドを使用してアドレスを取得します。
_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)を印刷すると、郵便番号、都市、国のみが表示されます。
現在の位置のストリート名を取得するにはどうすればよいですか?
getAddressLine
を使ってみましたか?この方法の詳細については こちら を参照してください
このようなことを行う必要があります(テストされていません):
for (int i = 0; i < addresses.getMaxAddressLineIndex(); i++) {
Log.d("=Adress=",addresses.getAddressLine(i));
}
あなたのコードでこのようなことを試してください
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();
それは私のために動作します:-)頑張ってください;-)
getFromLocationも機能しませんでした。あなたが取ることができるいくつかのステップがあります。
1。まず最初にgradleに入り、最新のplay services libを使用していることを確認してください。
2。過剰に指定しないでください。結果が得られなかったのは、住所に多くの情報が必要だったからです。郵便番号を削除すると、毎回結果が出ました。
3。オンラインAPIを試してください: http://maps.google.com/maps/api/geocode/json?address=192%20McEwan%20Dr%20E,%20Caledon,%20ON&sensor=false 単にあなたと一緒にそこにアドレスします。
幸運を
完全な住所(市+通り)がある場合は、
address.getAddressLine(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';
}
あなたはこれを適応させて、大騒ぎせずに通りの名前を出すことができるはずです。