这里有几个 JavaScript 和 JSON 的例子(在jQuery http://jquery.com/)使用IP查找方法(借助IPinfoDB http://ipinfodb.com/ip_location_api_json.php)和地理定位API http://diveintohtml5.info/geolocation.html方法(借助谷歌地图 API http://code.google.com/apis/maps/documentation/javascript/ and YQL http://developer.yahoo.com/yql/console/).
在这两个示例中,我都检索地区和国家/地区,但您可以选择多个值。请注意,这些示例不执行任何错误处理,这里为简洁起见对它们进行了编辑,否则请参阅完整的演示 http://jsfiddle.net/Marcel/ZjXXh/embedded/result/.
JavaScript 中的 IP 查找
这种方法很好,因为它很容易实施,并且在国家一级相当准确,但对于更具体的情况,准确性会大大下降。
// API key excluded for brevity, see full demo.
var apiurl = 'http://api.ipinfodb.com/v3/ip-city';
$.getJSON(apiurl+'/format=json&callback=?',
function(data){
$("h3#location").html(data.regionName + ", " + data.countryName);
}
);
地理定位API
尽管这种方法并不完美,但它已经非常准确了。系统会提示用户共享地理位置详细信息,这可能会减少使用量。
navigator.geolocation.getCurrentPosition(function(pos){
$.getJSON(apiurl+'/format=json&callback=?',
function(data){
var regionName = data[...]AdministrativeAreaName;
var countryName = data[...]CountryName;
$("h3#location").html(regionName + ", " + countryName);
}
);
});
在那里你会看到我用了谷歌地图 API v3 http://code.google.com/apis/maps/documentation/javascript/basics.html通过YQL http://developer.yahoo.com/yql/console/以便可以进行 JSON 回调。
完整演示:http://jsfiddle.net/ZjXXh http://jsfiddle.net/Marcel/ZjXXh/embedded/result/