【问题标题】:How do I automatically find a user's location?如何自动找到用户的位置?
【发布时间】:2023-03-31 20:26:01
【问题描述】:

我目前正在开发一个节目列表网站。我将按位置显示以各种不同方式排序的用户的显示信息。

知道我可以在用户首次登录网站时询问他们所在的位置,但我注意到许多网站都内置了自动检测位置的功能(例如,请参阅Last.fm“活动:您所在地区的音乐会列表”)。

他们是怎么做到的?我目前正在使用 Ruby on Rails 构建我的网站。

【问题讨论】:

  • 不要忘记为您喜欢的一些答案投票,并可能标记已接受的答案。人们总是可以使用鼓励。
  • 我赞成三个答案。但是有人对所有事情都投了反对票。
  • @Coding:有趣。那么继续,好问题。

标签: ruby-on-rails ruby language-agnostic location detect


【解决方案1】:

以下是相关 Google Maps API 文档的链接:

http://code.google.com/apis/ajax/documentation/#ClientLocation

它显示了如何使用它的示例:

/**
 * Set the currentState_ and currentCountry_ properties based on the client's
 * current location (when available and in the US), or to the defaults.
 */
InTheNews.prototype.setDefaultLocation_ = function() {
  this.currentState_ = this.options_.startingState;
  if (google.loader.ClientLocation &&
      google.loader.ClientLocation.address.country_code == "US" &&
      google.loader.ClientLocation.address.region) {

    // geo locate was successful and user is in the United States. range
    // check the region so that we can safely use it when selecting a
    // state level polygon overlay
    var state = google.loader.ClientLocation.address.region.toUpperCase();
    if (InTheNews.stateNames[state]) {
      this.currentState_ = state;
    }
  }
  this.currentCountry_ = "US";
}

并告诉你你会从中得到什么:

填充时, google.loader.ClientLocation 对象是 填充以下内容 Metro 级别粒度属性:

  • ClientLocation.latitude — 提供与客户端 IP 地址相关的低分辨率纬度

  • ClientLocation.longitude — 提供与客户端 IP 地址相关的低分辨率经度

  • ClientLocation.address.city — 提供与客户端 IP 地址关联的城市名称

  • ClientLocation.address.country — 提供与客户 IP 地址相关的国家/地区名称

  • ClientLocation.address.country_code — 提供与客户端 IP 地址关联的 ISO 3166-1 国家代码的名称

  • ClientLocation.address.region — 提供与客户端 IP 地址关联的国家/地区特定区域名称

【讨论】:

  • 我对社区有点陌生,所以这可能是不符合标准的,但是从页面中包含一个 sn-p 如何实质性地增加答案?他仍然需要点击链接才能使用 API,不是吗?
  • @runako:我们的想法是让 SO 成为一个充满信息的 wiki。因此,拥有链接是一个很好的开始,但提供更多信息以让某人有一个良好的开端会更好。
  • @runako - 如果页面移动或被删除怎么办?
  • 在这种情况下,上面发布的文档很可能也被弃用了。
  • @runako:然后可以编辑此 wiki。如果您想了解更多信息,我建议您通读常见问题解答,了解有关我们为什么更喜欢 SO 的更多信息。
【解决方案2】:

他们通常通过 IP 表使用 IP 解析。 ip2nation 可能会给出一些想法

【讨论】:

    【解决方案3】:

    您可能希望查看MaxMind's GeoLite 解决方案以获取 IP 位置。一个开源解决方案。

    【讨论】:

      【解决方案4】:

      有一种新方法,实际上它是查找地理位置的更好方法,因为浏览器将原生支持 W3C API 进行地理位置...您应该查看GeoMereLaal

      【讨论】:

        【解决方案5】:

        http://humbuckercode.co.uk/licks/gems/geoip/ 是一个使用 Maxminds 免费或付费库的简单 gem。

        轻松设置,无需更新架构。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-01-14
          • 2016-09-30
          • 2011-11-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-04-21
          • 1970-01-01
          相关资源
          最近更新 更多