Ruby on rails RubyonRails-Geocoder视图

Ruby on rails RubyonRails-Geocoder视图,ruby-on-rails,google-maps,rails-geocoder,Ruby On Rails,Google Maps,Rails Geocoder,我试图使用它来显示基于地址的位置 我的问题是,一旦我从用户插入数据库的地址获得Lat和Long,我应该在视图中放置什么来显示交互式地图 我的地址模型 belongs_to <another model> attr_accessible <all addresses attributes including latitude and longitude> geocoded_by :address after_validation :geocode, :if =&

我试图使用它来显示基于地址的位置

我的问题是,一旦我从用户插入数据库的地址获得Lat和Long,我应该在视图中放置什么来显示交互式地图

我的地址模型

 belongs_to <another model>
 attr_accessible <all addresses attributes including latitude and longitude>

 geocoded_by :address

 after_validation :geocode, :if => :address_changed?
属于\u,但无法理解如何在show view中获取位置上的单个地图。

仔细查看。这个gem使它变得微不足道,关于如何在视图中获取交互式地图的说明非常清楚:

(我假定您的地址模型属于用户模型。请根据需要更改名称。)

如果您只需要地图上的一个特定用户,当然可以更改控制器:

@json = User.find(params[:id]).address.to_gmaps4rails
在你看来:

<%= gmaps4rails(@json) %>

仔细看看。这个gem使它变得微不足道,关于如何在视图中获取交互式地图的说明非常清楚:

(我假定您的地址模型属于用户模型。请根据需要更改名称。)

如果您只需要地图上的一个特定用户,当然可以更改控制器:

@json = User.find(params[:id]).address.to_gmaps4rails
在你看来:

<%= gmaps4rails(@json) %>

谷歌地图API有很多有用的例子。在最简单的情况下,您可以执行以下操作:

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
  var lat = <%= @model.latitude %>, 
      lon = <%= @model.longitude %>,
      map;
  function initialize() {
    var myOptions = {
      center: new google.maps.LatLng(lat, lon)
    };
    map = new google.maps.Map(document.getElementById('map_canvas'),
        myOptions);
  }

  google.maps.event.addDomListener(window, 'load', initialize);
</script>
<div id="map_canvas"></div>

var lat=,
lon=,
地图;
函数初始化(){
变量myOptions={
中心:新google.maps.LatLng(lat,lon)
};
map=new google.maps.map(document.getElementById('map_canvas'),
肌肽);
}
google.maps.event.addDomListener(窗口“加载”,初始化);

只需将
@model.latitude
@model.longitude
替换为模型中相应的地理编码字段。

谷歌地图API有许多有用的示例。在最简单的情况下,您可以执行以下操作:

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
  var lat = <%= @model.latitude %>, 
      lon = <%= @model.longitude %>,
      map;
  function initialize() {
    var myOptions = {
      center: new google.maps.LatLng(lat, lon)
    };
    map = new google.maps.Map(document.getElementById('map_canvas'),
        myOptions);
  }

  google.maps.event.addDomListener(window, 'load', initialize);
</script>
<div id="map_canvas"></div>

var lat=,
lon=,
地图;
函数初始化(){
变量myOptions={
中心:新google.maps.LatLng(lat,lon)
};
map=new google.maps.map(document.getElementById('map_canvas'),
肌肽);
}
google.maps.event.addDomListener(窗口“加载”,初始化);

只需将
@model.latitude
@model.longitude
替换为模型中相应的地理编码字段。

如果您有lat/long,则不一定需要GMFR gem。你可以使用标准的谷歌地图api:我有lat和long BEACODER,因为当我输入并提交地址时,Geocoder会计算这个。因此,我不需要在geocoder提供的coords视图中“调用”地图api吗?我明白。但是你可以使用标准的GoogleMapsJavaScriptAPI代码段,不需要特殊的gem。如果你有lat/long,你不一定需要GMFR gem。你可以使用标准的谷歌地图api:我有lat和long BEACODER,因为当我输入并提交地址时,Geocoder会计算这个。因此,我不需要在geocoder提供的coords视图中“调用”地图api吗?我明白。但是你可以使用标准的GoogleMapsJavaScriptAPI代码段,不需要特殊的gem。这似乎是一个简单的好主意,但当我尝试它时,我得到的只是一个灰色框,地图应该在那里。是的,我已经将@model.latitute/longitude替换为我的。我还声明了#map#u canvas在css中设置了高度和宽度。对不起,这些问题我是新来的:/这似乎是一个简单的好主意,但当我尝试时,我得到的只是一个灰色的盒子,地图应该在那里。是的,我已经将@model.latitute/longitude替换为我的。我还声明了#map#u canvas在css中设置了高度和宽度。对不起,这些问题我是新来的:/我真不敢相信。事实上,我正在编写相同的代码,但没有显示任何内容……我不敢相信application.css文件中缺少的是
*=require gmaps4rails
。感谢you@Silver美好的我喜欢那些“doh!”的时刻,真不敢相信。事实上,我正在编写相同的代码,但没有显示任何内容……我不敢相信application.css文件中缺少的是
*=require gmaps4rails
。感谢you@Silver美好的喜欢那些“doh!”时刻。