我在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);
}
});
答案 0 :(得分:0)
我认为不可能从用户的IP地址获取完整格式化的地址,因为ISP不提供此信息。否则,每个人都可以知道你住在哪里:)
您可以使用能够为您提供近似位置的服务以及有关该区域的信息。
例如,您可以使用userinfo.io这是一个免费的ip-to-geolocation服务。准确度大致如下:
数据来自几个数据库,所以非常好。在实践中,较发达的国家将非常准确(我居住在美国,地理位置在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"
}
}
免责声明:我写过并维护此服务