如何从MVC中的IP地址获取格式化地址

时间:2015-01-18 07:29:38

标签: asp.net-mvc-3 asp.net-mvc-4 geolocation location

我在javascript中使用以下代码来获取经度,纬度,城市,国家等。 但我需要完整的格式化地址,我怎么能得到这个?

jQuery.ajax({
            url: '//freegeoip.net/json/',
            type: 'POST',
            dataType: 'jsonp',
            success: function (location) {
                // example where I update content on the page.
                jQuery('#city').html(location.city);
                jQuery('#region-code').html(location.region_code);
                jQuery('#region-name').html(location.region_name);
                jQuery('#areacode').html(location.areacode);
                jQuery('#ip').html(location.ip);
                jQuery('#zipcode').html(location.zipcode);
                jQuery('#longitude').html(location.longitude);
                jQuery('#latitude').html(location.latitude);
                jQuery('#country-name').html(location.country_name);
                jQuery('#country-code').html(location.country_code);
            }
        });

1 个答案:

答案 0 :(得分:0)

我认为不可能从用户的IP地址获取完整格式化的地址,因为ISP不提供此信息。否则,每个人都可以知道你住在哪里:)

您可以使用能够为您提供近似位置的服务以及有关该区域的信息。

例如,您可以使用userinfo.io这是一个免费的ip-to-geolocation服务。准确度大致如下:

  • 大陆:~99.9%
  • 国家:~95%
  • 城市:~50%
  • 确切位置(纬度/经度):~50%

数据来自几个数据库,所以非常好。在实践中,较发达的国家将非常准确(我居住在美国,地理位置在1个街区内),欠发达国家可能会给你一个更广泛的近似区域。

要使用它,只需将依赖项添加到库中:

<script type="text/javascript" href="//cdnjs.cloudflare.com/ajax/libs/userinfo/1.0.0/userinfo.min.js"></script>

获取数据:

<script type="text/javascript">
UserInfo.getInfo(function(data) {
  // the "data" object contains the info
}, function(err) {
  // the "err" object contains useful information in case of an error
});
</script>

数据看起来像这样:

{
  request_date: "2014-09-18T04:11:25.154Z",
  ip_address: "192.77.237.95",
  position: {
    latitude: 37.7758,
    longitude: -122.4128,
    accuracy: 3   // This is the accuracy radius, in kilometers
  },
  continent: {
    name: "North America",
    code: "NA",
  },
  country: {
    name: "United States",
    code: "US",
  },
  city: {
    name: "San Francisco",
    code: "94103"
  }
}

免责声明:我写过并维护此服务