Проблема с геокодированием Карт Google - PullRequest
2 голосов
/ 28 апреля 2009

Я играю с Google Maps впервые. И я изо всех сил пытаюсь раскрыть некоторую информацию о месте, где находится маркер.

Я создал пример, чтобы вы увидели. Проблема возникает, когда я перетаскиваю A-узел, getGeocode () возвращает undefined?

Мне нужно извлечь почтовый индекс, город и адрес из узла, когда я его перетаскиваю.

Пожалуйста, смотрите http://dev.korebogen.dk/gmap/

Заранее спасибо!

Обновление

Я отредактировал свой код из ответов - и теперь я получаю оба адреса (все еще нужно обрезать его, чтобы получить информацию в отдельных переменных), но по какой-то причине мои выходные данные оказались равными «0» и «1 "(массив) мне действительно нужно обратить геокод, который также?

И можно ли сделать на карте событие щелчка, чтобы добавить маркеры A и B (если при загрузке нет указаний?) http://dev.korebogen.dk/gmap/ обновлено!

Это исходит от:

var param = i + "@" + newMarkers[i].getLatLng().y + "," + newMarkers[i].getLatLng().x;

Это обновленная часть:

GEvent.addListener(newMarkers[i], "dragend", function() {
            var points = [];
            for (var i = 0; i < newMarkers.length; i++) {
                var param = i + "@" + newMarkers[i].getLatLng().y + "," + newMarkers[i].getLatLng().x;
                //points[i] = newMarkers[i].getLatLng();
                points.push(param);
                if (!i) {
                    var x = new GClientGeocoder();

                    x.getLocations(newMarkers[0].getLatLng(), function(addresses) {
                        if (addresses.Status.code == 200) {
                            var address = addresses.Placemark[0].address;
                            document.getElementById("start").innerHTML = address;
                        }
                    });

                    x.getLocations(newMarkers[1].getLatLng(), function(addresses) {
                        if (addresses.Status.code == 200) {
                            var address = addresses.Placemark[0].address;
                            document.getElementById("end").innerHTML = address;
                        }
                    });
                }
            }
            gdir.loadFromWaypoints(points);

        });

Ответы [ 2 ]

1 голос
/ 28 апреля 2009

Проблема здесь в том, что объект, который вы получаете из вашего запроса loadFromWaypoints, не заполнен всеми членами, которые вы запрашиваете в onGDirectionsLoad (). Если вы заглянете в журнал ошибок JavaScript, вы увидите:

Ошибка: gdir.getRoute (0) .getStartGeocode (). AddressDetails.Country не определена

Хорошо, согласно Документации Google, ответ от loadFromWaypoints и GClientGeodcoder должен быть одинаковым.

Я позволил себе провести какое-то тестирование с вашим образцом , и вдруг стало очевидно, что ответы не совпадают. Если вы посмотрите на http://www.cannonade.net/geo.js,, вы увидите, что я зашифровал запрос GClientGeocoder и ответ для первого маркера, и они сильно отличаются. Так что вам нужно сделать пару вещей:

  • Проверьте свои ответы, чтобы убедиться, что вы не получаете ошибок JavaScript для ненаселенных результатов:

    if ('AddressDetails' в соотв.)

  • Выполните запрос GClientGeocoder для каждой точки маркера, чтобы получить полную информацию об адресе. Мой образец делает это для первого маркера.

1 голос
/ 28 апреля 2009

Вы пытаетесь преобразовать позицию в адрес, обычно называемый «обратное геокодирование».

См. Пример кода здесь .

Короче говоря, вместо вызова getGeocode вы должны вызывать GClientGeocoder.getLocations

...