Google Geocoder + Google Maps добавление маркера

Что я пытаюсь сделать, так это добавить маркер, когда геокодер завершит синтаксический анализ latlng... Это мой код:

function parseLocation() {
    var user1Location = "Mechelen, Belgium";
    var geocoder = new google.maps.Geocoder();
    //convert location into longitude and latitude
    geocoder.geocode({
        address: user1Location
    }, function (locResult) {
        lat1 = locResult[0].geometry.location.lat();
        lng1 = locResult[0].geometry.location.lng();
        if (status == google.maps.GeocoderStatus.OK) {
            $('#map_canvas').bind('init', function () {
                $('#map_canvas').gmap('addMarker', {
                    'position': lat1 + ',' + lng1
                }).click(function () {
                    $('#map_canvas').gmap('openInfoWindow', {
                        'content': lat1 + ',' + lng1
                    }, this);
                });
            });
        }
    });
}

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


person Toon Van Dooren    schedule 21.05.2012    source источник


Ответы (1)


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

geocoder.geocode({"address":user1Location}, function(locResult, status) {
     if (status == google.maps.GeocoderStatus.OK) {
        lat1 = locResult[0].geometry.location.lat();
        lng1 = locResult[0].geometry.location.lng();
     }
});

Это работает по ссылке в том же коде.

http://jsfiddle.net/2jbTX/2/

person turankonan    schedule 21.05.2012