Карты Google – получение результатов[0].formatted_address из объединенных результатов[1].formatted_address

Адрес, который у меня есть, представляет собой объединенный results[1].formatted_address, полученный из базы данных, содержащей 6 номеров, например 530456. Затем я геокодировал его и поместил маркер на карту Google. Эта часть успешна.

Теперь я хочу отобразить полный адрес results[0].formatted_address в информационном окне маркера, поэтому я перевернул геокодирование широты маркера, чтобы получить полный адрес, но при этом вся карта исчезла. То, как я это сделал, таково:

var address;
var eventwindow;
function codeAddress(postal) {
    geocoder.geocode( {'address': postal + ", Singapore"}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        map.setCenter(results[0].geometry.location);
        eventwindow = new google.maps.InfoWindow();
        var markerE = new google.maps.Marker({
            map: map,
            position: results[0].geometry.location,
        });

        address = getMarkerAddress(results[0].geometry.location);

        google.maps.event.addListener(marker, 'click', function(){
            if(eventwindow)
                eventwindow.close();
            eventwindow = new google.maps.InfoWindow({
                content: address,
            });
            eventwindow.open(map,marker);
        });
      } else {
        alert("Geocode was not successful for the following reason: " + status);
      }
    });
  }

function getMarkerAddress(location) {
    geocoder.geocode({'latLng': location}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
          if(results[0])
          {
            address = results[1].formatted_address.substring(10);
          }
        }
       else {
        alert("Geocoder failed due to: " + status);
      }
    });

Я не знаю, правильно ли я делаю это, и не уверен, где я ошибся. Есть ли другой способ решить эту проблему? Если да, то как?


person consprice    schedule 11.07.2012    source источник


Ответы (1)


Я не знаю, правильно ли я делаю это, и не уверен, где я ошибся. Есть ли другой способ решить эту проблему? Если да, то как?

Если вы знаете «правильный» адрес, используйте его. Вы не предоставили достаточно сведений о своем приложении, чтобы предложить, как это сделать. Вы можете избежать неопределенности геокодера, сохраняя координаты, которые возвращаются от геокодера, в своей базе данных вместе с адресом, тогда, если вы найдете ошибку, вы сможете ее исправить.

Эта статья о стратегиях геокодирования может помочь.

person geocodezip    schedule 11.07.2012
comment
Я не знаю правильный адрес. Текущее приложение позволяет пользователям создавать события с такими подробностями, как местоположение, путем добавления булавки на карту, которая возвращает 6-значный почтовый индекс и сохраняется в базе данных. При просмотре события место события отображается на карте в виде булавки, а подробности отображаются в информационном окне маркера. Я хочу избежать изменения базы данных, поскольку это также будет означать изменение классов сущностей и сервлетов Java. - person consprice; 11.07.2012
comment
Ваша статья дала мне то, что мне нужно было знать. Похоже, вместо этого я должен выполнять геокодирование на стороне сервера. Спасибо за помощь:) - person consprice; 11.07.2012