将地理位置javascript变量传递给rails无限重载
好的,我正在尝试创建一个在一页上的地图。javascript应该定位用户,然后将这些变量传递给rails,以便它可以找到附近的存储模型位置。我似乎不知道我需要做什么才能让它工作。由于body onload='getLocation()'和.js文件中的window.location函数,它处于无限循环中。url也是/findme 控制器将地理位置javascript变量传递给rails无限重载,javascript,jquery,ruby-on-rails,ruby,geolocation,Javascript,Jquery,Ruby On Rails,Ruby,Geolocation,好的,我正在尝试创建一个在一页上的地图。javascript应该定位用户,然后将这些变量传递给rails,以便它可以找到附近的存储模型位置。我似乎不知道我需要做什么才能让它工作。由于body onload='getLocation()'和.js文件中的window.location函数,它处于无限循环中。url也是/findme 控制器 def show @nearby_stores = (params[:lat].present? && params[:lon].pre
def show
@nearby_stores = (params[:lat].present? && params[:lon].present?) ? Storeuser.near([params[:lat], params[:lon]], 50) : []
respond_to do |format|
format.html
end
end
看法
好吧,愚蠢的我
一个同事帮我修的
if (!window.location.search) {
window.location = ('/findme?lat=' + lat + '&lon=' + lon);
}
当您执行
window.location=…
时,您意识到这将更改当前页面,对吗?您可能希望在#
之后追加数据,以便页面不会刷新。
var x = document.getElementById("map");
function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showPosition);
}
else{x.innerHTML = "Geolocation is not supported by this browser.";}
}
function showPosition(position)
{
handler = Gmaps.build('Google', { markers: { maxRandomDistance: null } });
handler.buildMap({ provider: {}, internal: {id: 'map'}}, function(){
markers = handler.addMarkers([
{
"lat": position.coords.latitude,
"lng": position.coords.longitude,
"picture": {
"url": "https://addons.cdn.mozilla.net/img/uploads/addon_icons/13/13028-64.png",
"width": 36,
"height": 36
},
"infowindow": "You!"
}
]);
handler.bounds.extendWith(markers);
handler.fitMapToBounds();
});
var lat = position.coords.latitude
var lon = position.coords.longitude
var parsed_data = {location: {lat: lat, lon: lon}}
window.location = ('/findme?lat=' + lat + '&lon=' + lon);
}
if (!window.location.search) {
window.location = ('/findme?lat=' + lat + '&lon=' + lon);
}