簡體   English   中英

如何在模型中獲取用戶的經緯度

[英]How to get the user latitude and longitude in model

我打算在驗證當前用戶是否位於某個區域后在Rails代碼上執行一些ruby。 我的問題是,當使用request.location值時,我得到的緯度和經度與從Google地圖獲得的緯度和經度不對應。 還有其他獲取用戶位置的方法嗎? 我想避免使用JavaScript代碼,因為在該位置發生某種情況后我需要編輯一個ruby模型,而我已經為此奮斗了一段時間。

順便說一句,我正在為用戶模型使用devise。

我的用戶模型具有一個稱為signed_in的字段,如果用戶僅在一個指定的區域中登錄 ,則該字段存儲為一個布爾值。

class User < ActiveRecord::Base

 def is_at_place(lat, lon)
      #place = [-17.792365,-63.182531] #this is the actual place
      place = [-17.0000, -63.0000] #this is my home
      delta = 0.003000
      #latitude range
      rlat = (place[0]+delta)..(place[0]-delta)
      #longitude range
      rlon= (place[1]+delta)..(place[1]-delta)
      if rlat.include?(lat) and rlon.include?(lon)
        return true
      else
        return false
      end
    end

def set_signed_in(latitude, longitude)
    if is_at_place(latitude, longitude)
      user = User.find(session["warden.user.user.key"][0][0])
      user.signed_in = true
      user.save
      flash.alert = "Succesfully logged in"
    else
      flash.alert = "Succesfully logged in but as a outside user"
    end
  end

我將需要將緯度和經度傳遞給用戶模型中的set_signed_in方法。

我不知道您想要手機還是電腦。

在移動設備上,您將能夠使用它並獲得准確的位置,在Mac上的計算機上,Mac可以使用wifi來獲得更精確的位置,但是大多數計算機卻無法。

事實是,如果您的服務器可以從外部使用,這將是一個安全問題,因為位置欺騙很容易。

我猜想這是一個小型個人網站,您可以做的是,自動登錄更安全,那就是使用您的連接IP和登錄來代替。

還要查看maxmind的geoip數據庫,以防瀏覽器不向您發送標頭。 他們有一個基於Web的版本,也可以在本地存儲。 還有Teliza和Freegeoip.net。

除非用戶身處某個大城市並且對(GPS / AGPS)設置了定位,否則不要期望過高的准確性

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM