使用Google-Maps-for-Rails添加标记

时间:2011-04-08 15:04:03

标签: ruby-on-rails ruby-on-rails-3 google-maps google-maps-markers gmaps4rails

我正在玩https://github.com/apneadiving/Google-Maps-for-Rails和 我想清除地图上的所有标记,并在地图上用户点击的位置添加一个新标记,我在页面中添加了以下代码

<script type="text/javascript" charset="utf-8">
function gmaps4rails_callback() {
   google.maps.event.addListener(Gmaps4Rails.map, 'click', function(object){ 
      alert(object.latLng);
   });
</script>

通过这种方式,我可以看到一个带有lat和long值的警报,现在我该如何删除旧标记并创建一个新标记并将其放在地图上?

1 个答案:

答案 0 :(得分:3)

如果要清除gmaps4rails创建的标记,请使用此js函数:

Gmaps4Rails.clear_markers();

否则,循环标记并制作marker.setMap(null)

好吧,以下功能会删除所有标记,并在用户点击时添加一个新标记:

var marker = null;
function gmaps4rails_callback() {
   Gmaps4Rails.clear_markers();
   if (marker != null) { marker.setMap(null); }
   google.maps.event.addListener(Gmaps4Rails.map, 'click', function(object){ marker = new google.maps.Marker({position: object.latLng, map: Gmaps4Rails.map});});
}

注意:

  • 你可以在js代码中使用你想要的任何逻辑来创建一个标记或通过ajax发送它的坐标。
  • 纬度可以使用:object.latLng.lat()检索,经度使用:object.latLng.lng()

添加标记的另一种方法是使用此处描述的add_marker函数:https://github.com/apneadiving/Google-Maps-for-Rails/wiki/Dynamic-%28or-Ajax%29-map-refresh