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);
                });
            });
        }
    });
}

Когато предупредя променливите във функцията init, те са недефинирани, знам, че този геокодер е асинхронен, но чакам състоянието да е наред... Някаква идея какво съм направил погрешно?


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