IP地址提取经纬度值

34

是否可以从IP地址中获取经度和纬度值在asp.net中? 如果可能,请告诉我如何获得这些值。


请尝试使用MaxMind - codaddict
谢谢Unicomaddict,但它不是免费的:(。还有其他链接吗!! - Zerotoinfinity
6个回答

33
MaxMind Geolite city是免费的。如果不够好,您可以升级到更准确的付费版本。我无法保证付费版本的质量,因为我从未使用过。
如果您喜欢SQL,请下载CSV版本。将其加载到您选择的数据库中,然后查询即可。
更快且节省空间的选项是下载相同数据库的文件二进制块版本,然后使用C#类进行查询。
或者,我发现ipinfodb.com很有用。查询通过简单的HTTP GET。例如,要定位stackoverflow.com,请尝试:
http://ipinfodb.com/ip_query.php?timezone=false&ip=69.59.196.211

这将返回一个包含纬度和经度的XML文件,格式如下:
<Response>
  <Ip>69.59.196.211</Ip>
  <Status>OK</Status>
  <CountryCode>US</CountryCode>
  <CountryName>United States</CountryName>
  <RegionCode>41</RegionCode>
  <RegionName>Oregon</RegionName>
  <City>Corvallis</City>
  <ZipPostalCode>97333</ZipPostalCode>
  <Latitude>44.4698</Latitude>
  <Longitude>-123.343</Longitude>
</Response>

http://forum.ipinfodb.com/viewtopic.php?f=7&t=269上可以找到一些与VB.NET相关的示例代码。


1
自从这篇文章发布以来,他们要求注册才能获得API密钥,但是这是免费的,而且相对不太痛苦。 - mrbellek
我一直在免费使用这项服务,并在页面上获得了信用点,它一直非常稳定。 - James Westgate
提供的ipinfodb.com查询不再起作用。此外,即使是他们的付费服务也存在事实错误。例如,它将塞尔维亚首都贝尔格莱德列为沃伊伏丁那省的一部分,这是完全不正确的。 - Igor Levicki

2

嗨,Thedugas,http://freegeoip.appspot.com/ 没有正常工作,我已经实施了相同的东西,它抛出一个错误503。可能是这个服务停止了。:(如果您有其他想法,请告诉我。再次感谢您的回复。 - Zerotoinfinity

2
尝试使用IPInfoDB,据我所知,它是免费的。
他们提供可下载的数据库,但最简单的解决方案似乎是使用XML API。提供的示例是针对php的,但我相信使用ASP.Net同样可以访问。

1

http://www.iptolatlng.com/对我很有帮助,因为它提供了我需要的原始JSON输出,这对我正在开发的应用程序非常重要。


0
如果你正尝试通过 JavaScript 客户端访问位置,那么在 HTML5 中可用的地理位置 API 是非常有帮助的。
if(navigator.geolocation){             
    navigator.geolocation.getCurrentPosition(geoLocationSuccess, geoLocationError);
}

geoLocationSuccess和geoLocationError分别是成功和错误的回调函数。

function geoLocationSuccess(position){
    alert('lat: ' + position.coords.latitude + ', lon: ' + position.coords.longitude);
}

1
在这种情况下,用户必须通过浏览器上的警报来授权,但这并不总是好的,因为他们可能不信任该网站或者会离开。 - GAV

0

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