如何在postgres表中为使用html5地图的用户保存用户的经度和纬度?
How would I go about saving a users latitude and longitude in my postgres table for a user using the html5 map?
所以我们要做的是一旦用户点击他/她想要保存他们的位置我们将它保存到经度和纬度列。谢谢你的帮助和照顾我们!
https://github.com/rolaandoes/nexu/tree/dev保存用户位置(经度,纬度)的html文件
<h1>Users#edit for <%= @user.id %></h1>
<p>Find me in app/views/users/edit.html.erb</p>
<p><button onclick="geoFindMe()" data-id="<%= @user.id %>"id="finder- btn">Geo-Coordnate My Position</button>Send Coordinates to DB</p>
<div id="out"></div>
<h2>Coordinates to DataBase!</br>lat, lon</h2>
<a href="#" onclick="this.style.backgroundColor='#990000'">Paint it red</a>
这是我们的js文件
$(function(){
$('#finder-btn').on('click', function (){
var currentUserId = $(this).attr('data-id')
$.ajax({
url: '/users/' + currentUserId,
data: { latitude: LatLng[0], longitude: LatLng[1] },
type: 'get',
success: function(data) {
console.log("Patch Succesful!")
},
error: function(err) {
console.log("Error Thrown")
}
});
});
});
//update location for current_user
LatLng = [];
console.log(LatLng);
var latitude = LatLng[0]
var longitude = LatLng[1]
function geoFindMe() {
var output = document.getElementById("out");
if (!navigator.geolocation){
output.innerHTML = "<p>Geolocation is not supported by your browser</p>";
return;
}
function success(position) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
output.innerHTML = '<p>Latitude is ' + latitude + '° <br>Longitude is ' + longitude + '°</p>';
var img = new Image();
img.src = "https://maps.googleapis.com/maps/api/staticmap?center=" + latitude + "," + longitude + "&zoom=13&size=300x300&sensor=false";
// console.log(longitude);
// console.log(latitude);
//PLUCK into Location TABLE
// latitude = lat_Jon;
// longitude = lon_Jon;
LatLng.push(latitude);
LatLng.push(longitude);
output.appendChild(img);
};
function error() {
output.innerHTML = "Unable to retrieve your location";
};
output.innerHTML = "<p>Locating…</p>";
navigator.geolocation.getCurrentPosition(success, error);
}
我们的users_controller,我们需要更新我们表中的位置为纬度和经度
def update
# @user = User.find(session[:user_id])
user_id = current_user.id
@user = User.find(user_id)
@user.update_attributes(user_params)
puts @user.latitude
end
这里发生的一些事情可能会给您带来麻烦。
-
您正在做
GET
而不是POST
或PUT
来尝试更新用户的纬度和经度。尝试将AJAX调用从
type: 'get'
更改为type: 'post'
,这将帮助Rails确定将请求路由到哪个控制器动作(您想要的是users_controller#update
) 在您的
users_controller
中,使用params[:id]
查找用户,代码看起来像:user = User.find(params[:user_id])
与找到用户的方式相同,您需要解析lat和lout参数。您的
user_params
方法正在对您实际上没有执行的参数进行假设。如果你的数据看起来像:{ 'user': { 'longitude': '29.388', 'latitude': '187.39848' } }
但是你的参数看起来像:
{ 'longitude': '29.388', 'latitude': '182.3888' }
params[:longitude]
和params[:latitude]
我会这样写:
class UsersController < ApplicationController def update user = User.find(params[:id]) user.update!(latitude: params[:latitude], longitude: params[:longitude]) end end
相关文章:
- 谷歌地图/GMAP3 - 绘制从用户地理位置到已知目的地的路线 - 需要帮助
- 谷歌地图 - 用户选择不允许位置
- 当用户与谷歌地图交互时,如何从中获取信息
- 在谷歌地图上显示用户当前位置并更新
- 谷歌地图赢得'当用户拒绝共享位置时,t初始化
- 谷歌地图:使用自定义标记显示当前用户位置
- 显示用户's在图像地图上的位置
- 如何在地图上显示用户位置以及我的标记
- 在谷歌地图API JS V3上显示距离用户当前位置最近的多个标记,距离30公里
- 如何使用“地图”在谷歌地图上显示用户位置;onclick”;作用
- 区分程序化Bing AJAX地图导航与用户平移/缩放和窗口大小
- 从用户那里获取谷歌地图坐标
- 让谷歌地图加载*后*找到用户的位置
- Javascript - 确定用户当前位置是否在谷歌地图的 KML 层中
- 如何在用户的位置上制作地图中心
- 谷歌地图 禁用用户对所有事件的平移
- 用户在谷歌地图上标记一个位置
- 允许用户使用他们输入的半径在地图上绘制圆圈
- 更改用户点击时的谷歌地图标记图标
- 在嵌入谷歌地图的图像中添加用户界面