2009-11-17 6 views
5

ho avuto un'occhiata alle precedenti domande poste, ma non riesco sembrano adattarsi questo ecco che è:Google Maps aggiungere un marcatore a Mappa, quindi memorizzare latitudine e longitudine in Ruby on Rails

Fondamentalmente , Ho un progetto Ruby on Rails e mi piacerebbe avere una pagina in cui l'utente punta la sua posizione su una mappa di google aggiungendo un marker (solo 1 dovrebbe essere consentito) e quindi memorizza la longitudine e la latitudine all'interno del Ruby on Rails progetto su cui sto lavorando.

Mi piacerebbe sapere quale sarebbe l'approccio migliore a questo (aggiungere una mappa con Javascript?) Ma come recuperare la latitudine e la longitudine quando l'utente preme un pulsante all'interno di ruby ​​on rails?

Apprezzerei molto qualsiasi suggerimento/link a siti pertinenti ecc., Poiché lavorare in un ambiente rubino su rotaia è piuttosto nuovo per me e non sono sicuro di come procedere nel fare quanto sopra.

Grazie mille in anticipo

risposta

3

Penso che il primo passo sarebbe far funzionare le tue viste senza una mappa. Immettere lat/long manualmente in modo da sapere che le viste e i controller funzionano. Una volta raggiunto quel punto, dai uno sguardo allo Google Maps API documentation. Aggiungi una mappa alla tua vista, scopri come aggiungere un marker. Quando aggiungi/rimuovi un marker puoi aggiornare i tuoi input lat/long con JavaScript (utilizzerei personalmente jQuery). A questo punto è possibile rendere gli input lat/long nascosti o di sola lettura, a meno che non vi sia un motivo per cui gli utenti aggiornino manualmente il lat/long.

FYI - Google potrebbe suggerire di utilizzare V3 dell'API di Maps ma quando ho provato a utilizzarlo c'erano troppi pezzi mancanti. Mi terrei con V2.

+0

Grazie mille i tuoi suggerimenti mi hanno aiutato a risolvere i miei problemi – Erika

0

non so le specifiche, ma vorrei controllare le API di Google Maps per una funzione di callback che viene chiamata quando un utente rilascia un marcatore. Sono sicuro che ce n'è uno. Quando viene chiamata questa funzione di callback, verrà passata con latitudine e longitudine. Con ciò è possibile aggiornare gli attributi del modulo con i valori corretti.

Solo per aiutarti ad andare nella giusta direzione.

4

Ecco un breve esempio:

your_page.html

<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=xxx;hl=en" type='text/javascript'></script> 

<script type='text/javascript'>  
     var draggable_marker = null; 

     $(document).ready(function() { 
      if (GBrowserIsCompatible()) { 
      map = new GMap2(document.getElementById('map_div')); 
      map.addControl(new GSmallMapControl()); 

      draggable_marker = new GMarker(new GLatLng(42.6976489, 23.3221545), {draggable : true,title : "Place this marker to your location"); 

      GEvent.addListener(draggable_marker, 'dragend', function() { 
       RubyGmap.setPosition(draggable_marker); 
      }); 
      GEvent.addListener(map, 'click', function(overlay, latlng, overlaylatlng){ 
       RubyGmap.setMarkerPosition(draggable_marker, latlng); 
      }); 
      } 
     }); 
</script> 



<div id="map_div" style="width:690px;height:340px;" ></div> 

ruby_gmap.js

RubyGmap = {  
setPosition: function(marker) { 
    $('#latitude_field').val(marker.getLatLng().lat()); 
    $('#longitude_field').val(marker.getLatLng().lng()); 
}, 
setMarkerPosition: function(marker, latlng) { 
    SELECTED = true; 
    map.addOverlay(marker); 
    marker.setLatLng(latlng); 
    RubyGmap.setPosition(marker); 
} 
} 
0

Se si sta tentando di utilizzare il Goog le API di Maps in uno dei tuoi progetti Rails, quindi ti consiglio vivamente di utilizzare lo YM4R plugin. Il plug-in fornisce un simpatico incapsulamento di oggetti "ruby-friendly" dell'API di Google Maps. Lo README in the Rdoc ha un codice di esempio eccellente per come iniziare a visualizzare la mappa e visualizzare uno o più marker.

Il grande vantaggio dell'uso del plug-in è che il plug-in estrae l'intera API GMaps dietro gli oggetti ruby ​​in modo che sia possibile creare e aggiungere alla mappa utilizzando solo il codice Ruby. Non dovrai scrivere alcun Javascript ...a meno che non si desidera;)

0

Cartografo plugin supporta Rails 3+,

E 'stato riscritto a lavorare per enorme numbe di marcatori e cluster

che supporta l'integrazione indolore di Maps Google v3 a rotaie , http://grati.la/cartorbflw