如何使用HTML5地理定位或Google API获取地址的纬度和经度?

10

我遇到了一个问题,就是我能从Facebook获取用户的位置信息,但我需要获得该位置的纬度和经度,然而我仍然没有找到解决方案。

如果可以使用HTML5地理位置或任何Google API获取该位置的纬度和经度,那将非常有帮助。请问有什么解决方案吗?

5个回答

18
如果浏览器支持地理位置信息,且 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的信息,请参阅以下链接:


你在哪里调用 successFunction() 函数? - Gino

4

我在SmartyStreets工作,我们也提供一个API来获取地址的坐标;它被称为LiveAddress API

正如Bart所提到的,Google的条款不允许你在没有显示Google地图的情况下进行地理编码,而且你也不能存储结果。如果你想定位一个地址,我建议使用像LiveAddress这样的东西,它实际上还会验证地址的有效性 -- 这些其他API和HTML5不会做到这一点。

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

LiveAddress.geocode(address, function(geo) {
    alert("The address is at: " + geo.coords);
});

SmartyStreets是仅支持美国还是也支持欧洲的?该API无法在荷兰找到我的地址。 - Split Your Infinity
这只适用于美国,但对于美国地址非常有效。 :) 对于国际情况,我们建议通过LiveAddress发送美国地址,或通过您选择的其他API发送其他地址,但请注意,大多数API实际上不会验证国际地址的可交付性/有效性。 - Matt
2
@flyleaf SmartyStreets 现在可以进行国际地址验证。 - camiblanch

2
我发现最好的选择是直接使用OpenStreetMap,通过他们拥有的一个子项目(Nominatim) API进行翻译。 API文档 例子中使用了REST调用: http://nominatim.openstreetmap.org/reverse?format=xml&lat=35.958&lon=-83.952&zoom=18 请注意,虽然他们的服务条款允许浏览器JavaScript直接客户端使用,但他们不希望高频率使用,并建议使用您的服务器作为代理添加缓存,以便可以轻松切换。数据可供下载,并提供设置本地可查询数据库的说明。

API文档指向维基百科,应该指向:https://nominatim.org/release-docs/develop/api/Overview/。 - Shardul Birje

0
请查看Gisgraphy,这是一个免费且开源的地理服务。
大家都会告诉你使用Google Maps API,但需要阅读使用条款
引用:
(g) 无Google地图内容使用。未经谷歌明确允许或书面许可,您不得使用或展示相关内容而没有相应的Google地图。在任何情况下,您都不得在非Google地图上或与其一起使用或展示相关内容。例如,您不能将通过服务获得的地理编码与非Google地图结合使用。另一个例子是,您不能在非Google地图旁边展示街景图像,但是您可以展示街景图像而不需要对应的Google地图,因为Maps APIs文档明确允许您这样做。
因此,在使用Google API时,必须使用Google地图。所以如果您需要地图功能,那么这样做就可以了。

0
如果我能使用HTML5地理定位获取纬度和经度,那将会很有帮助。
好的,那就确切地这么做——你在这方面遇到了什么问题吗?
这就是getCurrentPosition方法所用的。它的作用

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接