sistemas - Google Maps, Ruby on Rails, nivel de zoom con un marcador
sistema de recomendacion tesis (3)
Este comportamiento se debe a la función auto_zoom
incorporada en la API de Google Maps.
Una gmaps
a esto es establecerlo en false
en el método gmaps
:
<%= gmaps({
"map_options" => { "auto_zoom" => false},
"markers" => { "data" => @json }
})
%>
Y luego use gmaps4rails_callback
para satisfacer sus necesidades (asegúrese de tener al menos la versión 0.7.9)
<script type="text/javascript" charset="utf-8">
function gmaps4rails_callback() {
if (Gmaps4Rails.markers.length == 1) {
//only one marker, choose the zoom level you expect
Gmaps4Rails.map.setZoom(2);
}
else{
//more than one marker, let''s auto_zoom
Gmaps4Rails.map_options.auto_zoom = true;
Gmaps4Rails.adjust_map_to_bounds();
}
}
</script>
Estoy agregando soporte de google maps con apneadiving / Google-Maps-for-Rails (gracias joya impresionante)
Sin embargo, estoy encontrando un pequeño error, que muy probablemente sea mi culpa.
auto_zoom funciona muy bien cuando hay múltiples marcadores. Sin embargo, cuando solo hay un marcador, se aumenta el nivel máximo que no es bonito.
"zoom" solo funcionará cuando auto_zoom es falso, entonces eso no es lo que quiero.
Por lo tanto, podría usar "maxZoom", pero ahora los usuarios no pueden hacer zoom manualmente más allá de ese punto, que no es lo que yo quiero.
¿Hay alguna forma de evitar esto? ¿Mi explicación tiene sentido? ¿Es esto una limitación de Google Maps API?
Gracias...
Logré esto de una manera ligeramente diferente ya que sé que solo tendré un marcador en mi mapa. Soy relativamente nuevo en los rieles, pero este método se siente un poco más "limpio" que usar JS en su opinión.
Tengo lat y lng almacenados en mi modelo (codificado por geokit en el momento de la creación), también lo hizo en mi opinión:
<%= gmaps({
"map_options" => {"auto_zoom" => false, "zoom" => 15, "center_latitude" => @listing.lat, "center_longitude" => @listing.lng },
"markers" => {"data" => @markers }
})
%>
@markers es mi JSON creado por blah.to_gmaps4rails, y "listado" es mi modelo.
gracias, esto me ayudó ...
{"auto_zoom" => falso, "zoom" => 15, "center_latitude" => @ listing.lat, "center_longitude" => @ listing.lng}, "markers" => {"data" => @markers} })%>