如何使用AngularJS获取用户的zipcode

ski*_*kip 6 html javascript zipcode geolocation angularjs

我需要根据zipcode访问该站点的用户填充一些数据.

有人能告诉我如何检索该zipcode用户的位置吗?

我在我的应用程序上使用AngularJS.

fro*_*sty 12

好.这有点牵扯,但如果我是你,我会这样做.

首先,您将使用geolocation API,如下所示:

window.navigator.geolocation.getCurrentPosition(function(pos){
    console.log(pos);
});
Run Code Online (Sandbox Code Playgroud)

在回调中,您将获得一个位置对象.它看起来像这样:

{
  "timestamp":1408324851386,
  "coords"{
    "speed":null,
    "heading":null,
    "altitudeAccuracy":null,
    "accuracy":30,
    "altitude":null,
    "longitude":-111.8942634,
    "latitude":40.7288257
  }
} 
Run Code Online (Sandbox Code Playgroud)

然后,您可以获取经度和纬度,并致电您的服务器将其转换为邮政编码.获得纬度/经度是困难的部分.做数学把它变成拉链很容易.

调用自己的服务器将lat/long转换为zip的替代方法,您可以调用Google Maps的反向查找API.你给它一个lat长,它给你一个地址,完整的ZIP.请参阅此处了解如何执行此操作.

免责声明:这在IE8中不起作用,因为直到IE9才引入地理定位API.它适用于所有其他浏览器(除了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);
  });
})
Run Code Online (Sandbox Code Playgroud)

  • 当你调用getCurrentPosition时,它将在用户的浏览器中弹出,他们必须批准它.它对用户来说是不可见的.他们会看到你要求他们的位置. (2认同)