Как вернуть типы адресов из геокода карт Google? - PullRequest
2 голосов
/ 20 января 2012

В настоящее время я использую API Google Maps для определения местоположения на карте и возврата адреса улицы.

В настоящее время я возвращаю адрес со следующим кодом:

        function codeLatLng(markerPos) {
            geocoder.geocode({'latLng': markerPos}, function(results, status) {
              if (status == google.maps.GeocoderStatus.OK) {
                if (results[1]) {
                //Set markerAddress variable
                var markerAddress = results[0].formatted_address;
alert(markerAddress);
...

Но что, если я не хочу возвращать отформатированный адрес, а более подробную версию, используя типы компонентов адреса, как я могу вернуть определенные значения адреса, такие как: http://code.google.com/apis/maps/documentation/geocoding/#Types

Помощь оценена.

Ответы [ 2 ]

4 голосов
/ 26 января 2012

Могу ли я спросить, почему вы проверяете results[1], а затем используете results[0] (или это просто опечатка, которую я должен игнорировать)?

Пока status равно OK,будет как минимум один результат.В противном случае status будет ZERO_RESULTS.

В любом случае, вы можете использовать что-то вроде этого:

function codeLatLng(markerPos) {
  geocoder.geocode({'latLng': markerPos}, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
      var markerAddress = results[0].address_components[0].long_name
          + ' (type: ' + results[0].address_components[0].types[0] + ')';
      alert(markerAddress);

Вы можете много играть со всем массивом address_components, получайте удовольствие!:)

Чтобы получить еще больше удовольствия, ознакомьтесь с (исходным кодом) Google Maps API v3 Geocoder Tool по адресу http://gmaps -samples-v3.googlecode.com / svn / trunk /геокодер / v3-геокодер-tool.html

1 голос
/ 20 января 2012

long_name - полное текстовое описание или имя компонента адреса, возвращаемое геокодером.

 function codeLatLng(markerPos) {
                geocoder.geocode({'latLng': markerPos}, function(results, status) {
                  if (status == google.maps.GeocoderStatus.OK) {
                    if (results[1]) {
                    //Set markerAddress variable
                    var markerAddress = results[0].long_name;
    alert(markerAddress);
...
...