谷歌有没有这样的东西。
不,Google 不提供类似的服务。 (请注意,这里声称它确实提供了它的答案,结果一无所获)。
帮助确定用户位置的任何其他免费或付费 API
他的IP
首先,这种服务的可靠性很难说。大多数服务依靠 ISP 来获取他们的数据,而 ISP 并不总是提供可靠的数据。此外,因为我假设您基本上关心用户的位置(而不是他的 IP 所属的位置),所以用户可以决定通过 VPN、Tor 或其他匿名者隐藏他的位置。
在您的一些 cmets 中,我看到您所说的可靠意味着 API 提供者的正常运行时间。如果是这样,我会推荐MaxMind's GeoIP2。首先,我已经看过这个网站很长时间了,它们经常更新(最后一次更新是 2014 年 4 月 1 日),此外,如果您非常害怕停机 - 您可以 download their database 并且不要依赖它们(也它们是免费的)。
我实际上很喜欢is less known and opensource 的另一项服务(它部分依赖于 MaxMind 的数据)。我只用过几次,所以我不能说它的正常运行时间,但我真的很喜欢他们的 API。它是如此简单,以至于很难想出更简单的方法:
http://www.telize.com/geoip/46.19.37.108
或者像这样
http://www.telize.com/geoip/2a02:2770::21a:4aff:feb3:2ee
会给你
{
"country":"Netherlands",
"dma_code":"0",
"timezone":"Europe\/Amsterdam",
"area_code":"0",
"ip":"46.19.37.108",
"asn":"AS196752",
"continent_code":"EU",
"isp":"Tilaa V.O.F.",
"longitude":5.75,
"latitude":52.5,
"country_code":"NL",
"country_code3":"NLD"
}
我认为这两项服务足以为您的访问者获取正常信息。但是一件重要的事情。如果您真的需要知道您的用户来自哪里 - 为什么不用html5 geolocation 询问他们?这是nice example,但您可以走得更远(询问他们位置是否正确,并让他们能够更改它)。我知道在您的情况下,您只需要 Country/City,但可能其他人会需要它。
附注2015 年 11 月。 现在 telize.com 需要付费才能使用,我找到了另一项目前免费的服务:
https://freegeoip.net/json/45.79.8.237
https://freegeoip.net/json/2600:3c00::f03c:91ff:fe98:c0f5