2

我试图使用地理编码器来显示基于地址的位置。

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

我的地址模型

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

 geocoded_by :address

 after_validation :geocode, :if => :address_changed?

插入地址后,会自动计算纬度和经度字段。

我遵循了 Ryan 的 Rail Cast 教程,但最后,我不想显示静态图像,而是想显示地图,谷歌地图交互风格。我怎样才能做到这一点?

如果已经查看了Google-Maps-for-Rails,但无法理解如何在显示视图中获取单个位置的地图。

4

2 回答 2

2

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

(我假设您的 Address 模型属于 User 模型。根据需要更改名称。)

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

@json = User.find(params[:id]).address.to_gmaps4rails

在您看来:

<%= gmaps4rails(@json) %>
于 2012-05-10T18:13:56.977 回答
2

此处提供了许多有用的 Google Maps 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>

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

于 2012-05-10T18:14:18.027 回答