【发布时间】:2016-01-28 00:02:07
【问题描述】:
我打算在验证当前用户是否位于某个区域之后执行一些 ruby on rails 代码。我的问题是,当使用request.location 值时,我得到的纬度和经度与我从谷歌地图得到的不对应。 还有其他方法可以获取用户位置吗?我想避免使用 JavaScript 代码,因为我需要在该位置的某些条件下编辑一个 ruby 模型,而我已经为此奋斗了一段时间.
顺便说一句,我正在为用户模型使用设计。
我的用户模型有一个名为 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 方法。
【问题讨论】:
-
您能否展示一下您将使用
usermodel制作的版本以及何时制作? -
好的。我现在就编辑它。
-
I get latitude and longitude that do not correspond to the ones I got from google maps.你在谷歌地图中输入了一个地址,然后将它的经度、纬度与你得到的进行比较?因为那做不到。除了提供准确位置的设备(如智能手机),返回的位置不会是确切位置,而是近似位置。 -
@eXa Google 地图为我提供了非常精确的当前位置。使用 Javascript 函数也会返回正确的纬度和经度。但是当使用
request.location.latitude或request.location.longitude时,我得到不同的值,因为我的IP 地址是从其他地方引用的,而不是我的实际位置。你明白我了吗?
标签: javascript ruby-on-rails google-maps devise rails-geocoder