我在 javascript 回调函数中使用 gmaps4rails 来确定用户的位置,然后在地图上绘制该位置。然后我想在控制器中访问这个位置信息并使用 ruby 地理编码器来查询附近的事件。根据萤火虫控制台,我可以看到纬度,经度坐标正在发布,但是当我尝试在控制器中访问这些参数时它不起作用 - 也就是说我没有收到任何错误,但没有显示任何事件地图(但是,如果我将用户地址直接输入到控制器代码中,则会显示附近的事件)。请参阅下面的代码。任何帮助/建议将不胜感激。
events/index.html.erb 中的回调
<% content_for :scripts do %>
<script type="text/javascript">
var lat;
var lng;
Gmaps.map.geolocationSuccess = function(){
if(Gmaps.map.callback){
lng = Gmaps.map.userLocation.lng();
lat = Gmaps.map.userLocation.lat();
Gmaps.map.addMarkers([{
"lng": lng,
"lat": lat,
"picture": "http://gmaps-samples.googlecode.com/svn/trunk/markers/pink/blank.png",
"width": "37",
"height": "34"
}]);
$.ajax({
type: 'POST',
url: 'events/index',
dataType: 'json',
data: "latitude=" + lat + "&longitude=" + lng,
});
}
};
</script>
<% end %>
事件控制器
def index
@events = Event.near(params[:latitude], params[:longitude],2)
@json = @events.to_gmaps4rails
respond_to do |format|
format.html # index.html.erb
format.js {render json: @events, content_type: 'text/json' }
end
end