Распечатка результатов поиска по карте Google - PullRequest
0 голосов
/ 29 января 2012

Мне нужно использовать Google Maps (v3), чтобы проверить, действительно ли существует адрес, введенный в поле поиска, и распечатать его на экране.Это достаточно просто сделать, просто проверив, найдена ли пара широта / долгота для этого адреса.Однако у меня есть проблема.

Когда пользователь вводит в расширенном поиске, например, обычном названии улицы, например First Street, мне нужно распечатать все найденные результаты, чтобы пользователь мог выбрать один.Мне не нужно отображать результаты на карте на данный момент, просто показать их список на странице.Я нашел в Интернете некоторый код, который должен был делать именно это, и изменил его, но он не работает.Я получаю сообщение об ошибке «GClientGeocoder () не определен», но я подозреваю, что даже когда я пройду мимо этого кода, будут проблемы, поэтому мне было интересно, может ли кто-то с большим опытом указать мне правильное направление.* Вот код, я жестко закодировал поисковый термин «Первая улица» в функцию для тестирования.

function showAddress() {
    var geo;
    geo = new GClientGeocoder();
    var search = 'First Street';
    // ====== Perform the Geocoding ======        
    geo.getLocations(search, function (result)
      {
        //map.clearOverlays(); 
        if (result.Status.code == G_GEO_SUCCESS) {
          // ===== If there was more than one result, "ask did you mean" on them all =====
          if (result.Placemark.length > 1) { 
            document.getElementById("message").innerHTML = "Did you mean:";
            // Loop through the results
            for (var i=0; i<result.Placemark.length; i++) {
              document.getElementById("message").innerHTML += "<br>"+(i+1)+": "+result.Placemark[i].address;
            }
          }
          // ===== If there was a single marker =====
          else {
            document.getElementById("message").innerHTML = "Result found:"+result.Placemark[0].address;
          }
        }
        // ====== Decode the error status ======
        else {
          alert('No results found');
        }
      }
    );
  }

«Сообщение» - это обычное <div>.Функция вызывается из тега body:

<body onLoad='showAddress()'>

1 Ответ

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

Этот код создан для устаревшего V2-API, я полагаю, вы загружаете V3-API-скрипты.

Когда я запускаю его с V2-API, он работает нормально.

V2 и V3 никак не совместимы.

Код переведен на V3:

    function showAddress() {
      var geo = new google.maps.Geocoder();

      var address = 'First Street';
      geo.geocode({"address": address},
                      function(result,status)
                      {
                        var out='no results found';
                        if (status == google.maps.GeocoderStatus.OK) 
                        {
                          if(result.length==1)
                          {
                            out = "Result found:"+result[0].formatted_address;
                          }
                          else
                          {
                            out = "Did you mean:";
                            for(var i=0;i<result.length;++i)
                            {
                              out+="<br>"+(i+1)+": "+result[i].formatted_address;
                            }
                          }

                        }

                        document.getElementById("message").innerHTML = out;
                      }
                    );
  }

http://jsfiddle.net/doktormolle/xUHAR/

...