有没有办法从客户端确定访客国家?

问题描述:

我使用谷歌地图和地理编码API来检索用户lat/lng后,他们输入一个邮政编码,但我想限制该邮政编码的用户国家,所以我不结束多个结果。有没有办法从客户端确定访客国家?

有没有一种方法可以从客户端可靠地确定一个访客来源国家可能使用jquery或可能解码用户代理莫名其妙?

我的通话结束的看起来像这样:

var country = ??? 
var postcode = document.getElementById('postcode').value + ', ' + country; 

var geocoder = new google.maps.Geocoder();   
geocoder.geocode({ 'address': postcode }, function (results, status) {   
    if (status == google.maps.GeocoderStatus.OK) { 
     ... 
    } 
}); 

有什么想法?

+1

也许像这样[** FIDDLE **](http://jsfiddle.net/4mry4/) – adeneo

+0

@adeneo这很完美!我会检查一下API。谢谢! – Paul

为了不依赖第三方,您可以通过使用Google's Loader来获取客户的位置。 Here's a great example正在使用中,请加载Google Maps API和ClientLocation。

您可以使用访客IP地址在GeoIP表中查找其来源。 周围有各种桌子, from MaxMind

请注意,如果用户位于代理服务器的后面或无法获取IP,则可能会失败。除此之外,它应该是一个相当可靠的方法,当然取决于你的GeoIP表格。