[英]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.