Как получить zipcode пользователя с помощью AngularJS

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

может кто-нибудь сказать мне, как получить zipcode местоположения этого пользователя?

Я использую AngularJS в своем приложении.

2 ответов


OK. Это немного запутанно, но вот как бы я это сделал на вашем месте.

во-первых, вы будете использовать API геолокации следующим образом:

window.navigator.geolocation.getCurrentPosition(function(pos){
    console.log(pos);
});

внутри обратного вызова, вы получите объект установки. Выглядит это так:

{
  "timestamp":1408324851386,
  "coords"{
    "speed":null,
    "heading":null,
    "altitudeAccuracy":null,
    "accuracy":30,
    "altitude":null,
    "longitude":-111.8942634,
    "latitude":40.7288257
  }
} 

затем вы можете взять широту и долготу и вызвать свой сервер, чтобы перевести его в почтовый индекс. Получение lat / long-сложная часть. Сделать математику, чтобы превратить это в zip легко.

An альтернатива вызову собственного сервера для перевода lat / long в zip, вы можете вызвать API обратного просмотра Google Maps. Вы даете ему lat long, и он дает вам адрес, в комплекте с молнией. См.здесь как это сделать.

отказ от ответственности: это не будет работать в IE8, так как API геолокации не был представлен до IE9. Он будет работать во всех других браузерах (кроме Opera Mini, #NBD).

ЗДЕСЬ ПОЛНАЯ РАБОТА Пример Я просто попробовал это, и он нашел мой дом, без проблем.

window.navigator.geolocation.getCurrentPosition(function(pos){
  console.log(pos);
  $http.get('http://maps.googleapis.com/maps/api/geocode/json?latlng='+pos.coords.latitude+','+pos.coords.longitude+'&sensor=true').then(function(res){
    console.log(res.data);
  });
})

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