Как я могу преобразовать название города или штата в почтовый индекс в javascript или angularjs с помощью Geocoder API или каким-либо другим способом? Из пользовательского ввода я хочу преобразовать его.
Как преобразовать название города или штата в почтовый индекс
Ответы (4)
Вот пример фабрики:
feederliteModule.factory('maps', ['$q', function ($q) {
var geocoder = new google.maps.Geocoder();
return {
geocode: function (address) {
var deferred = $q.defer();
geocoder.geocode({
'address': address
}, function (results, status) {
deferred.resolve(results);
// Should also reject if AJAX errors.
});
return deferred.promise;
}
};
}]);
где address
вводится.
Результат должен быть в виде json, где вы можете найти почтовый индекс:
...
{
"long_name": "168751",
"short_name": "168751",
"types": [
"postal_code"
]
}
...
Теперь вы можете вызвать его из контроллера, например:
maps.geocode(address)
Спасибо вам всем. Решил ..... :) Вот код:
function getCity (options) {
var geocoder = new google.maps.Geocoder(),
request;
if( options.latitude ) {
request= { 'latLng': new google.maps.LatLng( options.latitude, options.longitude ) };
} else {
request= { 'address': options.address };
};
geocoder.geocode( request, function( results, status ) {
if ( status == google.maps.GeocoderStatus.OK ) {
console.log( results );
geocoder.geocode( request, function( results, status ) {
if ( status == google.maps.GeocoderStatus.OK ) {
console.log( results );
var latitude = results[0].geometry.location.jb;
var longitude = results[0].geometry.location.kb;
var latlng = new google.maps.LatLng(latitude, longitude)
alert(latlng);
geocoder.geocode({'latLng': latlng}, function(results, status) {
//no result, check addresses
for( var resultIndex = 0; resultIndex < results.length; resultIndex++ ) {
var addresses = results[resultIndex].address_components;
for( var addressIndex = 0; addressIndex < addresses.length; addressIndex++ ) {
var types = addresses[addressIndex].types;
for( var typeIndex = 0; typeIndex < types.length; typeIndex++ ) {
if( types[typeIndex] == 'postal_code' ) {
alert(addresses[addressIndex].long_name) ;
return;
};
};
};
};
});
} else {
console.log( 'error: ' + status );
// complete();
};
});
};
У Google для этого есть отличный API. Ознакомьтесь с этой веткой Stack Overflow о получении почтового индекса из названия города с помощью GoogleAPI: Самый простой способ получить почтовый индекс по названию города
Конечно, почтовый индекс не обязательно связан с местом, но с маршрутом доставки. USPS контролирует почтовые индексы и меняет их по мере необходимости для повышения эффективности доставки почты. Многие люди ожидают, что почтовый индекс точно представляет определенный город или район в городе, но он не статичен. Из 42 000 5-значных почтовых индексов в США примерно 4% меняются каждый месяц, поэтому, где бы вы ни получали данные о вашем городе / штате / почтовом индексе, убедитесь, что они обновляются USPS ежемесячно.
Помимо карт Google существует множество коммерческих сервисов, которые предоставляют то, что вы ищете. Быстрый поиск в Google по запросу "zip code api" поможет.