如何自动查找用户的位置?

时间:2009-02-27 22:28:12

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

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

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

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

5 个答案:

答案 0 :(得分: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对象是   填充以下内容   城域级粒度属性:

     
      
  • 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地址关联的国家/地区特定区域名称

  •   

答案 1 :(得分:1)

他们通常使用IP表格进行IP解析。 ip2nation可能会提供一些想法

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

易于设置,无需更新架构。