Вопрос

У меня есть модель shop.Я хотел бы вывести простую оповещение о предупреждении, которая отображает имя shop, используя JavaScript, когда я нажимаю на маркер магазина на карте.

Это мой код:

# controller
@json = Shop.all.to_gmaps4rails do |shop, marker|
  marker.json({ id: shop.id, name: shop.name })
end

# view
<%= gmaps("map_options" => { auto_zoom: false, zoom: 2, class: "homepage-map" },
      "markers" => { data: @json,
                     options: { do_clustering: true,
                                clusterer_maxZoom: 11,
                                raw: "{ animation: google.maps.Animation.DROP }" }
                    })
%>

<% content_for :scripts do %>
<script type="text/javascript" charset="utf-8">
Gmaps.map.callback = function() {
  for (var i = 0; i <  this.markers.length; ++i) {
    google.maps.event.addListener(Gmaps.map.markers[i].serviceObject, 'click', function() {
      alert(put something here);
    });
  }
};
</script>
<% end %>
.

Это мой первый раз, работа с JSON, поэтому я прочитал некоторые вступительные статьи на JSON, а также JSON вJavaScript .Мне было интересно, как это делается с gmaps4rails.

Это было полезно?

Решение

Это должно сделать трюк:

<script type="text/javascript" charset="utf-8">
function handleMarkerClickClosure(marker) {
  return function() {
    alert(marker.name);
  }
}

Gmaps.map.callback = function() {
  for (var i = 0; i <  this.markers.length; ++i) {
    google.maps.event.addListener(Gmaps.map.markers[i].serviceObject, 'click', handleMarkerClickClosure(Gmaps.map.markers[i]) );
  }
};
</script>
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top