[Javascript] Google maps help!

  • Creatore Discussione Creatore Discussione simgia
  • Data di inizio Data di inizio

simgia

Nuovo Utente
26 Set 2017
17
0
1
51
Ciao a tutti.
Ho bisogna di un vostro aiuto perche non riesco ad uscirmene.
Sto usando pr la prima volta le api di google maps, non riesco a capire come geocalizzare un punto sulla mappa, cioè, lo script preso da google prende il punto sulla mapa tramite coordinate invece io vorrei che il pubto venisse preso tramite indirizzo testuale ad esempio Roma Via Vittorio Emauele.
Questo perche gli indirizzi vengono rilevati da un database, ho letto anche su google che ce uno script per trasformare gli indirizzi testuali in coordinate ma non mi funziona e non capisco dove sbaglio vi posto il code:

Codice:
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=mykey"></script>
<script type="text/javascript">

  function initialize(){
 
      var address = '<?php echo $address; ?>';
      geocoder.geocode({ 'address': address }, function (results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
    var options = { zoom: 14, center: results[0].geometry.location, mapTypeId: google.maps.MapTypeId.ROADMAP};
    var map = new google.maps.Map(document.getElementById('map'), options);
    var marker = new google.maps.Marker({ position: results[0].geometry.location, draggable: true, map: map, title: address });

    });
}
else {
alert("Problema nella ricerca o indirizzo non trovato");
document.getElementById('map').innerHTML = "Problema sulla visualizzazione della mappa"
}
    </script>
</head>
<body onload="initialize();">
<div id="map"></div>

Cosi non mi compare nulla.
Nella cosole mi da questo errore:
Uncaught ReferenceError: initialize is not defined at onload (page:60)

ed invece vi è mah....
 
Ciao, il problema è a monte. Sono convinto che prima di quell'errore ti venga segnalato qualche altro errore di sintassi. Provando il tuo script, così come è, a me compare infatti questo errore: SyntaxError: expected expression, got ')'

La funzione menzionata infatti non viene definita proprio perché, dal momento che ci sono errori di sintassi, l'interprete JavaScript entra in confusione e interrompe la lettura del restante codice.

Chiaramente, esaminando il tuo script, capisco dove sta il problema. Controlla e correggi le varie chiusure delle parentesi (sia tonde che graffe) in modo da ottenere una struttura valida del codice. Probabilmente hai pasticciato un po' assemblando le varie parti dello script che ora risultano accavallate tra loro.

Personalmente riesco a correggerlo e farlo funzionare ma non ho interesse a darti uno script già bello e pronto, trovo invece più corretto aiutarti e darti dei consigli per arrivare poi da solo a capire come procedere. Potrà infatti tornarti utile anche per altre eventuali future situazioni come questa.

Ti do quindi qualche consiglio: quando sviluppi del codice fai sempre attenzione a dare la corretta indentazione a ogni riga in modo da avere una chiara visione della struttura gerarchica che deve avere ogni blocco di codice. Non so se utilizzi qualche particolare editor, ma spesso questi offrono delle funzioni di indentazione automatica e degli strumenti che aiutano lo sviluppatore a chiarire meglio la struttura del codice; ad esempio quando porti il cursore su una parentesi, in genere assieme a questa viene evidenziata anche la sua rispettiva compagna che delimita quel particolare blocco di codice. Se usi già qualche editor avanzato, cerca magari di documentarti per imparare ad usarne gli strumenti messi a disposizione, oltre che imparare a riportare il codice secondo una corretta stesura. Se invece non usi particolari editor, magari è l'occasione giusta per iniziare; con una semplice ricerca web del tipo "code editor" puoi trovarne svariati, si tratta solo di iniziare a provarne qualcuno.

Oltre questo, sul tuo script verifica anche che la variabile geocoder, da te utilizzata dentro la funzione, sia definita anch'essa da qualche parte come istanza dell'oggetto google.maps.Geocoder(), perché nello script che hai postato manca questa parte, quindi otterresti un ulteriore errore di riferimento anche dopo che avrai corretto la sintassi.

Buon proseguimento.
 

Discussioni simili