2013-06-05 4 views
0

У меня была помощь, чтобы получить скрипт jquery, который будет геокодировать типизированное местоположение через систему геокодирования googles.Схват страны из jQuery geocode google

Мне нужно короткое имя страны, помещенное в поле страны. Для жизни меня я не могу понять, как я должен интегрироваться, и все, что я пытаюсь, не возвращает значение. Может кто-нибудь, пожалуйста, дать представление о правильном пути достижения этого, пожалуйста?

JSFIDDLE: http://jsfiddle.net/spadez/jCB4s/2/

$(function() { 
    var input = $("#loc"), 
     lat = $("#lat"), 
     lng = $("#lng"), 
     lastQuery = null, 
     lastResult = null, // new! 
     autocomplete; 

    function processLocation(callback) { // accept a callback argument 
    var query = $.trim(input.val()), 
     geocoder; 

    // if query is empty or the same as last time... 
    if(!query || query == lastQuery) { 
     callback(lastResult); // send the same result as before 
     return; // and stop here 
    } 

    lastQuery = query; // store for next time 

    geocoder = new google.maps.Geocoder(); 
    geocoder.geocode({ address: query }, function(results, status) { 
     if(status === google.maps.GeocoderStatus.OK) { 
     lat.val(results[0].geometry.location.lat()); 
     lng.val(results[0].geometry.location.lng()); 
     lastResult = true; // success! 
     } else { 
     alert("Sorry - We couldn't find this location. Please try an alternative"); 
     lastResult = false; // failure! 
     } 
     callback(lastResult); // send the result back 
    }); 
    } 

    autocomplete = new google.maps.places.Autocomplete(input[0], { 
    types: ["geocode"], 
    componentRestrictions: { 
     country: "uk" 
    } 
    }); 

    google.maps.event.addListener(autocomplete, 'place_changed', processLocation); 

    $('#searchform').on('submit', function (event) { 
    var form = this; 

    event.preventDefault(); // stop the submission 

    processLocation(function (success) { 
     if(success) { // if the geocoding succeeded, submit the form 
     form.submit() 
     } 
    }); 

    }); 
}); 

Согласно API мне нужно это:

results[]: { 
types[]: string, 
formatted_address: string, 
address_components[]: { 
    short_name: string, 
    long_name: string, 
    types[]: string 
}, 
geometry: { 
    location: LatLng, 
    location_type: GeocoderLocationType 
    viewport: LatLngBounds, 
    bounds: LatLngBounds 
} 
} 

ответ

1

Разбор по результатам ищет один с типом "страны"

Example that does that looking for a result with a type of "postal_code"

Что-то ли ke это должно работать (не проверено):

geocoder.geocode({ address: query }, function(results, status) { 
    if(status === google.maps.GeocoderStatus.OK) { 
    lat.val(results[0].geometry.location.lat()); 
    lng.val(results[0].geometry.location.lng()); 
    var address = results[0].address_components; 
    for (var p = address.length-1; p >= 0; p--) { 
     if (address[p].types.indexOf("country") != -1) { 
     // do something useful with the country... 
     // document.getElementById('postcode').innerHTML= address[p].long_name; 
     } 
    } 
    lastResult = true; // success! 
    } else { 
    alert("Sorry - We couldn't find this location. Please try an alternative"); 
    lastResult = false; // failure! 
    } 
    callback(lastResult); // send the result back 
}); 
Смежные вопросы