有没有一种简单的方法来确定用户所在的半球?

时间:2011-10-20 02:00:52

标签: javascript http geolocation

我正在开展一个包含季节性内容的项目,我们正在考虑确定用户的位置,以确定他们的季节。这样做的显而易见的方法是对其IP进行地理定位,然后获取纬度。 > 0是北半球,< 0是南方。

我很高兴这样做 - 虽然将IP确定到一个确切的位置似乎有点浪费,只是为了确定它们所在的行星的哪一半 - 但我想我会抛弃它如果有人有任何可以简化过程的技巧。

请求标题,可以在客户端使用JS提取的东西,这一切都很容易获得 - 我只是觉得它没有任何帮助。

3 个答案:

答案 0 :(得分:5)

您可以使用navigator.geolocation方法来避免任何类型的IP服务。

答案 1 :(得分:3)

我先检查客户的时钟 - 如果客户日历中存在夏令时, 你可以判断他是在赤道的北部还是南部。

如果没有dst信息,您可以使用地理位置,

或询问用户他是否在赤道以南......

window.whatHemisphere= (function(){
    var y= new Date().getFullYear();
    if(y.getTimezoneOffset()==undefined) return null;
    var jan= -(new Date(y, 0, 1, 0, 0, 0, 0).getTimezoneOffset()),
    jul= -(new Date(y, 6, 1, 0, 0, 0, 0).getTimezoneOffset()),
    diff= jan-jul;
    if(diff> 0) return 'N';
    if(diff< 0) return 'S'
    return null;
})()

答案 2 :(得分:1)

@kennebec 的回答很聪明,但代码似乎未经测试。这是有效的代码。它对不使用夏令时问题的地方没有帮助。

function whatHemisphere() {
    let y = new Date()
    if (y.getTimezoneOffset==undefined) return null
    y = y.getFullYear()
    let jan = -(new Date(y, 0, 1, 0, 0, 0, 0).getTimezoneOffset())
    let jul = -(new Date(y, 6, 1, 0, 0, 0, 0).getTimezoneOffset())
    let diff = jan - jul
    if (diff <  0) return 'N'
    if (diff >  0) return 'S'
    return null
}