2

我在玩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 值的警报,现在如何删除旧标记并创建新标记并将其放置在地图上?

4

1 回答 1

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

于 2011-04-08T19:02:47.283 回答