11

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

知道我可以在用户第一次登录网站时询问他们的位置,但我注意到许多网站都内置了自动检测位置的功能(例如,请参阅Last.fm “Events: Concert Listings in your区域”)。

他们如何做到这一点?我目前正在用 Ruby on Rails 构建我的网站。

4

5 回答 5

9

以下是相关 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 地址关联的国家特定区域名称

于 2009-02-27T22:39:44.833 回答
1

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

于 2009-02-27T22:32:18.437 回答
0

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

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

于 2011-03-09T17:07:22.933 回答
0

您可能想查看MaxMind 的 GeoLite解决方案以获取 IP 位置。一个开源解决方案。

于 2009-02-27T22:40:31.243 回答
0

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

于 2009-10-27T12:57:42.230 回答