8

我对一个问题感到困惑,即我可以从 Facebook 获取用户的位置,而我只需要获取该位置的纬度和经度,但我仍然找不到解决方案。

如果我可以使用 HTML5 地理位置或任何 Google API 获得该纬度和经度,这将有所帮助。解决办法是什么?

4

5 回答 5

15
if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(successFunction, errorFunction);
} 别的 {
    alert('您的浏览器似乎没有启用此页面所需的地理定位功能。请使用支持它的浏览器。');
}

如果浏览器支持地理定位并且getCurrentPosition成功运行,则调用成功函数。然后在函数中successFunction


function successFunction(position) {
    var lat = position.coords.latitude;
    var long = position.coords.longitude;
    console.log('Your latitude is :'+lat+' and longitude is '+long);
}

在此处阅读有关地理位置 API 的更多信息

于 2012-07-26T13:25:05.667 回答
4

Flyleaf,我在SmartyStreets工作,我们还提供 API 来获取地址坐标;它被称为LiveAddress API

正如 Bart 提到的,Google 的 TOS 不允许您在不显示 Google Map 的情况下进行地理编码,而且您无法存储结果。如果您希望按照您的建议查找地址,我建议使用 LiveAddress 之类的方法,它实际上也可以验证地址的有效性——这些其他 API 和 HTML5 不会这样做。

希望你能找到适合你的东西。现在的问题有点模糊,但也许这会有所帮助。它可能会像这样(使用 Javascript):

LiveAddress.geocode(address, function(geo) {
    alert("The address is at: " + geo.coords);
});
于 2012-07-26T13:36:18.003 回答
2

我发现最好的选择是通过他们拥有的子项目 ( Nominatim ) API直接使用OpenStreetMap 。

API 文档

REST调用示例: http ://nominatim.openstreetmap.org/reverse?format=xml&lat=35.958&lon=-83.952&zoom=18

请注意,虽然他们的服务条款确实允许从浏览器 JavaScript 直接客户端使用,但他们不希望大量使用并建议使用您的服务器作为代理来添加缓存,因此可以轻松切换。数据可供下载,并提供了设置本地可查询数据数据库的说明。

于 2013-06-08T17:05:12.380 回答
0

查看Gisgraphy一个免费的开源地理服务。

每个人都会告诉您使用 Google Maps API,但请阅读使用条款

(g) 不得使用没有 Google 地图的内容。您不得在没有相应 Google 地图的情况下使用或显示内容,除非 Maps API 文档明确允许您这样做,或获得 Google 的书面许可。在任何情况下,您都不得在非谷歌地图上或与非谷歌地图一起使用或显示内容。例如,您不得将通过服务获得的地理编码与非 Google 地图结合使用。再举一个例子,您不得在非 Google 地图旁边显示街景图像,但您可以在没有相应 Google 地图的情况下显示街景图像,因为 Maps API 文档明确允许您这样做。

因此,对于 Google API,您必须使用 Google Map。所以如果你需要一张地图,你就可以了。

于 2012-07-26T11:05:00.597 回答
0

如果我可以使用 HTML5 地理位置获得该纬度和经度,这将有所帮助

好吧,那就这样做吧——你的问题到底在哪里?

这就是该getCurrentPosition方法 的用途

于 2012-07-26T12:03:10.023 回答