8

Estoy añadiendo mapas de Google son compatibles con apneadiving/Google-Maps-for-Rieles (gracias impresionante joya)Google Maps, Ruby on Rails, el nivel de zoom con un marcador

estoy encontrando un pequeño problema, sin embargo, que muy probable es 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, por lo que no es lo que quiero.

Por lo tanto, podría utilizar "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 ...

Respuesta

17

Este comportamiento es debido a la auto_zoom función incorporada en la API de Google Maps.

Un trabajo en torno a esto es configurarlo para false en el gmaps método:

<%= gmaps({ 
     "map_options" => { "auto_zoom" => false}, 
     "markers"  => { "data" => @json } 
     }) 
%> 

y luego usar el gmaps4rails_callback para satisfacer sus necesidades (asegúrese de tener por lo 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> 
+0

awesome. ¡Gracias! –

+0

¿dónde pones esta devolución de llamada? en la vista? si es así, ¿dónde exactamente? – pruett

+0

@pruett: Cambié ligeramente la API desde 0.10.0, vea un ejemplo aquí: http://stackoverflow.com/questions/6741452/how-to-get-the-id-field-and-send-to-the -vista – apneadiving

2

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 almacenado en mi modelo (codificada por Geokit en el momento de la creación), por lo que hizo lo siguiente 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 creados por blah.to_gmaps4rails , y "listado" es mi modelo.

+0

Sí. Eso funciona correctamente Pero, mi problema vino cuando agregué más de un marcador. Entonces necesitas hacer la solución javascript arriba. ¡Gracias! –

0

gracias Esto me ayudó ...

{ "auto_zoom" => false, "zoom" => 15, "center_latitude" => @ listing.lat, "center_longitude" => @ listing.lng}, "marcadores" => {"data" => @markers} }) %>
Cuestiones relacionadas