Обратное геокодирование; JSON постоянно меняется в зависимости от доступных данных - PullRequest
2 голосов
/ 17 января 2011

Привет! Я могу изменить геокодирование на местоположение, основанное на значениях широты и долготы.Но моя проблема в том, что мне просто нужно название страны и города, ничего больше.

Бывает, что данные json, предоставляемые Google, меняются в зависимости от доступных данных.Время от времени есть строка местоположения, но для некоторого широты / длины нет информации о местонахождении.Есть ли эмпирическое правило или какой-нибудь класс-обертка, который может извлечь город и страну из всех возможных строк json?

, например http://maps.google.com/maps/geo?q=24.487148563173424,-78.046875&output=json дает мне

{
  "name": "24.487148563173424,-78.046875",
  "Status": {
    "code": 200,
    "request": "geocode"
  },
  "Placemark": [ {
    "id": "p1",
    "address": "Central Andros, The Bahamas",
    "AddressDetails": {
   "Accuracy" : 3,
   "Country" : {
      "CountryName" : "The Bahamas",
      "CountryNameCode" : "BS",
      "SubAdministrativeArea" : {
         "SubAdministrativeAreaName" : "Central Andros"
      }
   }
},
    "ExtendedData": {
      "LatLonBox": {
        "north": 24.6312368,
        "south": 24.3062499,
        "east": -77.7177462,
        "west": -78.2299838
      }
    },
    "Point": {
      "coordinates": [ -77.9738650, 24.4688482, 0 ]
    }
  } ]
}

, где какhttp://maps.google.com/maps/geo?q=47.33882269482199,-100.634765625&output=json дает мне

{
  "name": "47.33882269482199, -100.634765625",
  "Status": {
    "code": 200,
    "request": "geocode"
  },
  "Placemark": [ {
    "id": "p1",
    "address": "11445 471st Ave NE, McClusky, ND 58463, USA",
    "AddressDetails": {
   "Accuracy" : 8,
   "Country" : {
      "AdministrativeArea" : {
         "AdministrativeAreaName" : "ND",
         "SubAdministrativeArea" : {
            "Locality" : {
               "LocalityName" : "McClusky",
               "PostalCode" : {
                  "PostalCodeNumber" : "58463"
               },
               "Thoroughfare" : {
                  "ThoroughfareName" : "11445 471st Ave NE"
               }
            },
            "SubAdministrativeAreaName" : "Sheridan"
         }
      },
      "CountryName" : "USA",
      "CountryNameCode" : "US"
   }
},
    "ExtendedData": {
      "LatLonBox": {
        "north": 47.3307737,
        "south": 47.3244785,
        "east": -100.6025856,
        "west": -100.6089256
      }
    },
    "Point": {
      "coordinates": [ -100.6089257, 47.3276298, 0 ]
    }
  } ]
}

Есть ли какая-нибудь стандартная процедура, в которой я могу получить название города и страны?Правильно, я прохожу через JSON, пытаясь справиться с различными форматами, которые бросает на меня Гоголе.

Спасибо

1 Ответ

0 голосов
/ 17 января 2011

Вы можете попытаться найти подходящий парсер для извлечения этой информации?

РЕДАКТИРОВАТЬ

http://www.devshed.com/c/a/PHP/Parsing-Google-Maps-API-using-PHP-and-JSON-2348127/

Я считаю, что этохорошее чтение для вашего парсера

...