gmaps4rails:Cómo recuperar json valor desde el controlador?
-
13-12-2019 - |
Pregunta
Tengo un shop
modelo.Me gustaría que a la salida de un simple cuadro de alerta que muestra una shop
nombre con javascript cuando hago clic en un marcador de una tienda en el mapa.
Este es mi código:
# 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 %>
Esta es mi primera vez tratando con json por lo que he leído algunos artículos introductorios sobre json y también json en javascript.Me preguntaba cómo hacer esto con gmaps4rails.
Solución
Esto debe hacer el truco:
<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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow