Какова структура ответа Android-геокодера?

Я использую Geocoder для получения адресов для некоторых координат. Это дает адреса результатов в объекте Address, я пытаюсь изучить объект Address, чтобы я мог переставить различные атрибуты для отображения пользователя (например, Помещения, площадь, ориентир, местность, подобласть, город, штат).

Я предполагаю, что объект Geocoder раньше немного отличался и имел много адресных строк, но в настоящее время он содержит только одну и все фразы, разделенные запятыми, не совпадают с остальной частью тела, которую он предоставляет ниже.

Ниже структура JSON для справки:

1> Delhi Address: [
{
"mAddressLines": {
  "0": "E46, Lodhi Colony, Sector 3G, Rohini, Delhi, 110085, India"
},
"mAdminArea": "Delhi",
"mCountryCode": "IN",
"mCountryName": "India",
"mFeatureName": "E46",
"mHasLatitude": true,
"mHasLongitude": true,
"mLatitude": 28.703985300000003,
"mLocale": "en_US",
"mLocality": "Delhi",
"mLongitude": 77.1024425,
"mMaxAddressLineIndex": 0,
"mPostalCode": "110085",
"mPremises": "E46",
"mSubAdminArea": "North West Delhi",
"mSubLocality": "Rohini"
}
]

2> Delhi Address: [
{
"mAddressLines": {
  "0": "684, Pocket 7, Sector 2, Rohini, Delhi, 110085, India"
},
"mAdminArea": "Delhi",
"mCountryCode": "IN",
"mCountryName": "India",
"mFeatureName": "684",
"mHasLatitude": true,
"mHasLongitude": true,
"mLatitude": 28.700565400000002,
"mLocale": "en_US",
"mLocality": "Delhi",
"mLongitude": 77.0993105,
"mMaxAddressLineIndex": 0,
"mPostalCode": "110085",
"mPremises": "684",
"mSubAdminArea": "North West Delhi",
"mSubLocality": "Rohini"
},
{
"mAddressLines": {
  "0": "Himalaya Apartment, Guru Gowalkar Marg, Pocket 00, Sector 2, Rohini, Delhi, 110085, India"
},
"mAdminArea": "Delhi",
"mCountryCode": "IN",
"mCountryName": "India",
"mFeatureName": "Himalaya Apartment",
"mHasLatitude": true,
"mHasLongitude": true,
"mLatitude": 28.7004086,
"mLocale": "en_US",
"mLocality": "Delhi",
"mLongitude": 77.09895829999999,
"mMaxAddressLineIndex": 0,
"mPostalCode": "110085",
"mPremises": "Himalaya Apartment",
"mSubAdminArea": "New Delhi",
"mSubLocality": "Rohini",
"mThoroughfare": "Guru Gowalkar Marg"
}
]

3> Hyderabad Address: [
{
"mAddressLines": {
  "0": "Rinda Legend Capital Mall, Main Rd, Subhash Nagar, Badi Chowdi, Koti, Hyderabad, Telangana 500095, India"
},
"mAdminArea": "Telangana",
"mCountryCode": "IN",
"mCountryName": "India",
"mFeatureName": "Rinda Legend Capital Mall",
"mHasLatitude": true,
"mHasLongitude": true,
"mLatitude": 17.3852123,
"mLocale": "en_US",
"mLocality": "Hyderabad",
"mLongitude": 78.48660459999999,
"mMaxAddressLineIndex": 0,
"mPostalCode": "500095",
"mPremises": "Rinda Legend Capital Mall",
"mSubAdminArea": "Ranga Reddy",
"mSubLocality": "Koti",
"mThoroughfare": "Main Road"
},
{
"mAddressLines": {
  "0": "5-1-314, Main Rd, Subhash Nagar, Badi Chowdi, Koti, Hyderabad, Telangana 500095, India"
},
"mAdminArea": "Telangana",
"mCountryCode": "IN",
"mCountryName": "India",
"mFeatureName": "5-1-314",
"mHasLatitude": true,
"mHasLongitude": true,
"mLatitude": 17.3852895,
"mLocale": "en_US",
"mLocality": "Hyderabad",
"mLongitude": 78.4865963,
"mMaxAddressLineIndex": 0,
"mPostalCode": "500095",
"mSubAdminArea": "Hyderabad",
"mSubLocality": "Koti",
"mSubThoroughfare": "5-1-314",
"mThoroughfare": "Main Road"
},
{
"mAddressLines": {
  "0": "Omnitech InfoSolutions, 1st Floor, Bulding No 17, Main Rd, Goutam Nagar, Badi Chowdi, Kachiguda, Hyderabad, Telangana 501301, India"
},
"mAdminArea": "Telangana",
"mCountryCode": "IN",
"mCountryName": "India",
"mFeatureName": "Omnitech InfoSolutions",
"mHasLatitude": true,
"mHasLongitude": true,
"mLatitude": 17.385044,
"mLocale": "en_US",
"mLocality": "Hyderabad",
"mLongitude": 78.486671,
"mMaxAddressLineIndex": 0,
"mPostalCode": "501301",
"mPremises": "Omnitech InfoSolutions",
"mSubAdminArea": "Ranga Reddy",
"mSubLocality": "Kachiguda",
"mSubThoroughfare": "1st Floor, Bulding No 17",
"mThoroughfare": "Main Road"
},
{
"mAddressLines": {
  "0": "Mobile Tower, Main Rd, Goutam Nagar, Badi Chowdi, Kachiguda, Hyderabad, Telangana 500095, India"
},
"mAdminArea": "Telangana",
"mCountryCode": "IN",
"mCountryName": "India",
"mFeatureName": "Mobile Tower",
"mHasLatitude": true,
"mHasLongitude": true,
"mLatitude": 17.385044,
"mLocale": "en_US",
"mLocality": "Hyderabad",
"mLongitude": 78.486671,
"mMaxAddressLineIndex": 0,
"mPostalCode": "500095",
"mPremises": "Mobile Tower",
"mSubAdminArea": "Ranga Reddy",
"mSubLocality": "Kachiguda",
"mThoroughfare": "Main Road"
},
{
"mAddressLines": {
  "0": "Saini Industries, 1-47/2, Fateh Nagar, Fateh Nagar, Gandhi Nagar, Badi Chowdi, Kachiguda, Hyderabad, Telangana 500018, India"
},
"mAdminArea": "Telangana",
"mCountryCode": "IN",
"mCountryName": "India",
"mFeatureName": "Saini Industries",
"mHasLatitude": true,
"mHasLongitude": true,
"mLatitude": 17.385047399999998,
"mLocale": "en_US",
"mLocality": "Hyderabad",
"mLongitude": 78.4866596,
"mMaxAddressLineIndex": 0,
"mPostalCode": "500018",
"mPremises": "Saini Industries",
"mSubAdminArea": "Hyderabad",
"mSubLocality": "Kachiguda"
}
]

Кто-нибудь может дать некоторое представление о том, почему mAddressLine не совпадает с остальной частью тела?

РЕДАКТИРОВАТЬ: Я сомневаюсь, например, 1-й адресной линии:

"E46, Lodhi Colony, Sector 3G, Rohini, Delhi, 110085, India"

Но остальное тело

"mAdminArea": "Delhi",
"mCountryCode": "IN",
"mCountryName": "India",
"mFeatureName": "E46",
"mHasLatitude": true,
"mHasLongitude": true,
"mLatitude": 28.703985300000003,
"mLocale": "en_US",
"mLocality": "Delhi",
"mLongitude": 77.1024425,
"mMaxAddressLineIndex": 0,
"mPostalCode": "110085",
"mPremises": "E46",
"mSubAdminArea": "North West Delhi",
"mSubLocality": "Rohini"

нет "Колония Лодхи" или "Сектора 3G", что это? Вместо этого Местность отображается как "Дели", это не местность, а целый город.

1 ответ

В Java есть встроенная структура для десериализации ответа геокодера

List<android.location.Address> addresses =
 geocoder.getFromLocationName("your-address",1);
Другие вопросы по тегам