如何使用 AngularJS 获取用户的邮政编码
Posted
技术标签:
【中文标题】如何使用 AngularJS 获取用户的邮政编码【英文标题】:How to get the zipcode of a user using AngularJS 【发布时间】:2014-08-18 00:01:11 【问题描述】:我需要根据访问该站点的用户的zipcode
填充一些数据。
谁能告诉我如何检索该用户所在位置的zipcode
?
我在我的应用上使用 AngularJS。
【问题讨论】:
var zipCode = window.prompt('Please enter your ZIP code (if you have one)')
.
【参考方案1】:
好的。这有点复杂,但如果我是你,我会这样做。
首先,您将按如下方式使用地理定位 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
然后,您可以获取纬度和经度并调用您的服务器将其转换为邮政编码。获得纬度/经度是困难的部分。做数学把它变成一个拉链很容易。
除了调用您自己的服务器将纬度/经度转换为 zip 之外,您还可以调用 Google 地图的反向查找 API。你给它一个 lat long,它给你一个地址,并带有一个 ZIP。请参阅HERE 了解如何执行此操作。
免责声明:这在 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);
);
)
【讨论】:
当你调用 getCurrentPosition 时,它会在用户的浏览器中弹出并且他们必须批准它。它不会对用户不可见。他们会看到您正在请求他们的职位。 像魅力一样工作。谢谢:) 你能分享一下这个简单的数学运算来将坐标转换为邮政编码吗?除非使用某些公式创建邮政编码边界,否则我看不出它如何只涉及数学 我使用 Google 地图 API 来做到这一点。不是数学。你说的对。这将需要一个认真的设置来计算。 Google 地图 API 使其变得简单且免费,但有一定的限制。【参考方案2】:似乎没有任何内置方法可以确定这一点,您必须使用地图服务或邮政编码数据库。
【讨论】:
以上是关于如何使用 AngularJS 获取用户的邮政编码的主要内容,如果未能解决你的问题,请参考以下文章
如何获取登录用户 SpringSecurity + AngularJS 的用户信息
如何使用 Express、AngularJS、Socket.io 广播和获取通知?