{"id":1056,"date":"2012-03-15T00:01:25","date_gmt":"2012-03-14T23:01:25","guid":{"rendered":"http:\/\/www.manuelmarangoni.it\/sir-bit\/?p=1056"},"modified":"2016-01-22T17:22:27","modified_gmt":"2016-01-22T16:22:27","slug":"google-maps-php-trasformare-un-indirizzo-in-coordinate-latitudine-e-longitudine","status":"publish","type":"post","link":"https:\/\/www.manuelmarangoni.it\/sir-bit\/1056\/google-maps-php-trasformare-un-indirizzo-in-coordinate-latitudine-e-longitudine\/","title":{"rendered":"Google Maps, PHP &#8211; Trasformare un indirizzo in coordinate (latitudine e longitudine)"},"content":{"rendered":"<div id=\"attachment_1062\" style=\"width: 460px\" class=\"wp-caption aligncenter\"><a class=\"lightbox\" title=\"Ecco come apparir\u00e0 la nostra google maps una volta caricato l'indirizzo di un utente\" href=\"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-content\/uploads\/2012\/03\/Google-Maps-convertire-indirizzo-in-coordinate.jpg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1062\" class=\"size-medium wp-image-1062 \" style=\"margin-bottom: 5px;\" title=\"Google Maps - convertire indirizzo in coordinate\" src=\"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-content\/uploads\/2012\/03\/Google-Maps-convertire-indirizzo-in-coordinate-450x230.jpg\" alt=\"Google Maps con istruzioni e campi input\" width=\"450\" height=\"230\" srcset=\"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-content\/uploads\/2012\/03\/Google-Maps-convertire-indirizzo-in-coordinate-450x230.jpg 450w, https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-content\/uploads\/2012\/03\/Google-Maps-convertire-indirizzo-in-coordinate-1024x524.jpg 1024w, https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-content\/uploads\/2012\/03\/Google-Maps-convertire-indirizzo-in-coordinate.jpg 1229w\" sizes=\"(max-width: 450px) 100vw, 450px\" \/><\/a><p id=\"caption-attachment-1062\" class=\"wp-caption-text\">Ecco come apparir\u00e0 la nostra google maps una volta caricato l&#8217;indirizzo di un utente<\/p><\/div>\n<p>Nell&#8217;<a title=\"Google Maps - Cambiare coordinate con un click sulla mappa o trascinando il marker\" href=\"https:\/\/www.manuelmarangoni.it\/sir-bit\/1038\/google-maps-cambiare-coordinate-con-un-click-sulla-mappa-o-trascinando-il-marker\/\">articolo precedente<\/a> abbiamo visto come \u00e8 possibile aggiornare latitudine e longitudine semplicemente cliccando su un punto della mappa o trascinando il <em>marker<\/em> alla posizione voluta.<\/p>\n<p>Oggi vi presento uno script pi\u00f9 completo che, oltre a quanto detto sopra, ci dar\u00e0 la possibilit\u00e0 di <strong>convertire un indirizzo fisico in coordinate con la semplice pressione di un tasto<\/strong>. Una volta recuperate le coordinate in questo modo, saranno aggiornati anche gli input che contengono le nuove latitudine e longitudine. Trattandosi di un semplice form, potrete poi gestirlo a vostro piacimento (per esempio salvarlo nel database).<\/p>\n<p>Per lo scopo sar\u00e0 utile aver letto l&#8217;articolo precedente, perch\u00e9 le nozioni spiegate non saranno ripetute qui ma soltanto riprese: si dar\u00e0 quindi per assodato il fatto di aver compreso il funzionamento del javascript per creare l&#8217;evento &#8220;aggiorna coordinate in caso di click sulla mappa o di trascinamento del marker&#8221;. Si tratta comunque di un codice fisso e <strong>se non avete necessit\u00e0 di personalizzarlo, anche in questo caso potete limitarvi a scaricare lo script<\/strong> e a modificarne solo la struttura grafica.<\/p>\n<h2>Funzionamento dello script<\/h2>\n<p>Lo script \u00e8 commentato dove serve. Nel codice sar\u00e0 adoperato un misto di html, javascript, jquery, php e mysql.<br \/>\nPer quanto riguarda il php e il mysql, sono richieste soltanto conoscenze di base: uso delle variabili, come connettarsi a un database di tipo mysql e recuperare i dati da una tabella. <strong>Per chi avesse poca dimestichezza con l&#8217;interazione php-mysql, \u00e8 a disposizione un <a title=\"Tutorial php e mysql - connessione e gestione di un database: select, insert, update e delete\" href=\"https:\/\/www.manuelmarangoni.it\/sir-bit\/874\/tutorial-php-e-mysql-connessione-e-gestione-di-un-database-select-insert-update-delete-parte-01\/\">articolo di base dettagliato<\/a>.<\/strong><\/p>\n<p>La completa comprensione dello script richiede, naturalmente, una conoscenza approfondita del javascript e delle api di Google Maps, ma se quello che cercate \u00e8 un codice pronto da usare vi baster\u00e0 prenderlo cos\u00ec com&#8217;\u00e8 e cambiare la grafica per adattarla al vostro sito.<\/p>\n<p><strong>Vediamo in breve le funzionalit\u00e0<\/strong> che lo script vi metter\u00e0 a disposizione:<br \/>\n&#8211; possibilit\u00e0 di caricare la pagina con una mappa predefinita<br \/>\n&#8211; possibilit\u00e0 di cambiare le coordinate (latitudine e longitudine) con un click sulla mappa o trascinando il <em>marker<\/em>; gli input saranno di conseguenza aggiornati<br \/>\n&#8211; possibilit\u00e0 di scrivere un indirizzo e di trasformarlo in coordinate alla pressione di un tasto, aggiornando la mappa<\/p>\n<p><strong>All&#8217;interno dello zip troveremo<\/strong> sei file:<br \/>\n&#8211; <code>index.php<\/code> : la pagina principale, che richiamer\u00e0 tutti gli altri file. Al suo interno troveremo dunque il form, la mappa stampata e i campi di input.<br \/>\n&#8211; <code>config.inc.php<\/code>: contiene i dati per la connessione al database.<br \/>\n&#8211; <code>jquery.js<\/code>: include le librerie JQuery, necessarie per gli aggiornamenti in tempo reale degli input.<br \/>\n&#8211; <code>google_maps.js<\/code>: contiene le funzioni javascript che si preoccupano di interagire con la Google Maps. E&#8217; il cuore dello script.<br \/>\n&#8211; <code>style.css<\/code>: il foglio di stile per formattare l&#8217;aspetto del form e della mappa.<br \/>\n&#8211; <code>utenti.sql<\/code>: \u00e8 la tabella degli utenti, che potete importare nel vostro database.<!--more--><\/p>\n\n        <h2>Download script<\/h2>\n        <div style=\"float:left; width:100%; margin-top:60px; margin-bottom:40px;\">\n        <div style=\"float:left; width:100px;\"><img decoding=\"async\" title=\"[JAVASCRIPT, JQUERY, PHP] Google Maps &#8211; Trasformare un indirizzo in coordinate di longitudine e latitudine\" src=\"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-content\/themes\/sirbit\/images\/redirect_icon.png\" alt=\"[JAVASCRIPT, JQUERY, PHP] Google Maps &#8211; Trasformare un indirizzo in coordinate di longitudine e latitudine\" \/><\/div>\n        <div style=\"float:left; width:350px; padding-top:30px; font-size:14px;\"><strong><a title=\"[JAVASCRIPT, JQUERY, PHP] Google Maps &#8211; Trasformare un indirizzo in coordinate di longitudine e latitudine\" href=\"https:\/\/www.manuelmarangoni.it\/sir-bit\/code\/javascript-php-google-maps-trasformare-un-indirizzo-in-coordinate-di-langitudine-e-latitudine\/\">Pagina diretta alla scheda e al download del codice<\/a><\/strong><\/div>\n        <\/div>\n        <div style=\"clear:both;\"> <\/div>\n<h2>Le basi: inclusioni e database<\/h2>\n<p>Nel file <code>index.php<\/code> dobbiamo prima di tutto includere i file di base e cio\u00e8 i file <code>config.inc.php<\/code>, <code>jquery.js<\/code>, <code>style.css<\/code> e <code>google_maps.js<\/code>. Dell&#8217;ultimo ci occuperemo in seguito: per adesso ci basta sapere che contiene il javascript che abbiamo visto nell&#8217;articolo precedente (messo per l&#8217;appunto in questo js a parte per comodit\u00e0), con l&#8217;aggiunta di una funzione.<br \/>\nDobbiamo inoltre <strong>richiamare le api di Google Maps<\/strong>, sempre come javascript. Nel complesso sar\u00e0 qualcosa di questo tipo:<\/p>\n<div class=\"wp_syntax\">\n<table>\n<tbody>\n<tr>\n<td class=\"line_numbers\">\n<pre>1\r\n2\r\n3\r\n4<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"javascript\" style=\"font-family: monospace;\"><span style=\"color: #339933;\">&lt;<\/span>link rel<span style=\"color: #339933;\">=<\/span><span style=\"color: #3366cc;\">\"stylesheet\"<\/span> type<span style=\"color: #339933;\">=<\/span><span style=\"color: #3366cc;\">\"text\/css\"<\/span> href<span style=\"color: #339933;\">=<\/span><span style=\"color: #3366cc;\">\"style.css\"<\/span><span style=\"color: #339933;\">&gt;<\/span>\r\n<span style=\"color: #339933;\">&lt;<\/span>script type<span style=\"color: #339933;\">=<\/span><span style=\"color: #3366cc;\">\"text\/javascript\"<\/span> src<span style=\"color: #339933;\">=<\/span><span style=\"color: #3366cc;\">\"jquery.js\"<\/span><span style=\"color: #339933;\">&gt;&lt;\/<\/span>script<span style=\"color: #339933;\">&gt;<\/span>\r\n<span style=\"color: #339933;\">&lt;<\/span>script type<span style=\"color: #339933;\">=<\/span><span style=\"color: #3366cc;\">\"text\/javascript\"<\/span> src<span style=\"color: #339933;\">=<\/span><span style=\"color: #3366cc;\">\"http:\/\/maps.googleapis.com\/maps\/api\/js?sensor=false\"<\/span><span style=\"color: #339933;\">&gt;&lt;\/<\/span>script<span style=\"color: #339933;\">&gt;<\/span>\r\n<span style=\"color: #339933;\">&lt;<\/span>script type<span style=\"color: #339933;\">=<\/span><span style=\"color: #3366cc;\">\"text\/javascript\"<\/span> src<span style=\"color: #339933;\">=<\/span><span style=\"color: #3366cc;\">\"google_maps.js\"<\/span><span style=\"color: #339933;\">&gt;&lt;\/<\/span>script<span style=\"color: #339933;\">&gt;<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>L&#8217;unica considerazione va fatta per il database. Dovete creare una semplice tabella chiamata &#8220;utenti&#8221;, il cui scopo sar\u00e0 di elencare gli utenti che hanno accesso al sito. A ogni utente sar\u00e0 associato un indirizzo fisico e le coordinate latitudine e longitudine per trovare quell&#8217;indirizzo sulla mappa.<br \/>\nNello specifico, <strong>la tabella avr\u00e0 almeno questi campi<\/strong>:<br \/>\n&#8211; id (autoincrementale e univoco)<br \/>\n&#8211; indirizzo<br \/>\n&#8211; citta<br \/>\n&#8211; cap<br \/>\n&#8211; provincia<br \/>\n&#8211; lat : conterr\u00e0 la latitudine dell&#8217;indirizzo<br \/>\n&#8211; lng : conterr\u00e0 la longitudine dell&#8217;indirizzo<br \/>\nDa notare che i quattro campi dell&#8217;indirizzo potrebbero essere riuniti in un unico campo (va modificato di conseguenza lo script). Qui sono distinti per questione di efficienza: spesso, infatti, nei siti si richiede di specificare ogni singolo campo.<\/p>\n<p>Assumiamo di prendere il primo utente (id=1) e di estrarre inizialmente i suoi dati dal database.<\/p>\n<h2>Index.php<\/h2>\n<p>Il form della pagina conterr\u00e0 i due campi input destinati a mostrare la latitudine e la longitudine. Inoltre, saranno presenti i quattro campi input visti sopra (indirizzo, citt\u00e0, cap e provincia). <strong>Tutti questi input dovranno avere associato un id<\/strong>, grazie al quale potremmo aggiornare i loro valori. Saranno cio\u00e8 di questa forma:<\/p>\n\n<div class=\"wp_syntax\">\n<table>\n<tbody>\n<tr>\n<td class=\"line_numbers\">\n<pre>1\r\n2\r\n3\r\n4<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"html4strict\" style=\"font-family: monospace;\"><span style=\"color: #009900;\">&lt;<span style=\"color: #000000; font-weight: bold;\">div<\/span> <span style=\"color: #000066;\">class<\/span><span style=\"color: #66cc66;\">=<\/span><span style=\"color: #ff0000;\">\"blocco\"<\/span>&gt;<\/span>\r\n    <span style=\"color: #009900;\">&lt;<span style=\"color: #000000; font-weight: bold;\">div<\/span> <span style=\"color: #000066;\">class<\/span><span style=\"color: #66cc66;\">=<\/span><span style=\"color: #ff0000;\">\"nome_campo\"<\/span>&gt;<\/span>Indirizzo<span style=\"color: #009900;\">&lt;<span style=\"color: #66cc66;\">\/<\/span><span style=\"color: #000000; font-weight: bold;\">div<\/span>&gt;<\/span>\r\n    <span style=\"color: #009900;\">&lt;<span style=\"color: #000000; font-weight: bold;\">input<\/span> <span style=\"color: #000066;\">type<\/span><span style=\"color: #66cc66;\">=<\/span><span style=\"color: #ff0000;\">\"text\"<\/span> <span style=\"color: #000066;\">name<\/span><span style=\"color: #66cc66;\">=<\/span><span style=\"color: #ff0000;\">\"indirizzo\"<\/span> <span style=\"color: #000066;\">id<\/span><span style=\"color: #66cc66;\">=<\/span><span style=\"color: #ff0000;\">\"indirizzo\"<\/span> <span style=\"color: #000066;\">value<\/span><span style=\"color: #66cc66;\">=<\/span><span style=\"color: #ff0000;\">\"&lt;?php if(isset($row['indirizzo'])) echo $row['indirizzo'];?&gt;<\/span><\/span>\" class=\"input\" \/&gt;\r\n<span style=\"color: #009900;\">&lt;<span style=\"color: #66cc66;\">\/<\/span><span style=\"color: #000000; font-weight: bold;\">div<\/span>&gt;<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Il valore <code>$row['indirizzo']<\/code> deriver\u00e0 dai dati dell&#8217;utente che abbiamo estratto da database (se non \u00e8 vuoto).<br \/>\nCome potete vedere nello script, sotto agli input per l&#8217;indirizzo e prima di stampare la Google Maps, si trova un pulsante:<\/p>\n<div class=\"wp_syntax\">\n<table>\n<tbody>\n<tr>\n<td class=\"line_numbers\">\n<pre>1<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"javascript\" style=\"font-family: monospace;\"><span style=\"color: #339933;\">&lt;<\/span>input type<span style=\"color: #339933;\">=<\/span><span style=\"color: #3366cc;\">\"button\"<\/span> value<span style=\"color: #339933;\">=<\/span><span style=\"color: #3366cc;\">\"Ricarica la mappa\"<\/span> <span style=\"color: #003366; font-weight: bold;\">class<\/span><span style=\"color: #339933;\">=<\/span><span style=\"color: #3366cc;\">\"input\"<\/span> onclick<span style=\"color: #339933;\">=<\/span><span style=\"color: #3366cc;\">\"codeAddress( $('#indirizzo').val()+', '+$('#citta').val()+' '+$('#cap').val()+' '+$('#provincia').val())\"<\/span><span style=\"color: #339933;\">&gt;<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>A questo \u00e8 associato un evento JQuery, che sar\u00e0 richiamato alla pressione del pulsante stesso. In pratica, al click, recupereremo i valori dei quattro campi input e <strong>la funzione <code>codeAddress()<\/code> si occuper\u00e0 di convertirli in latitudine e longitudine<\/strong> (esamineremo dopo questa funzione).<\/p>\n<p>Ci resta da analizzare le varie condizioni che stabiliscono, di volta in volta, i valori della latitudine e longitudine, necessarie per aggiornare la mappa. Il codice \u00e8 il seguente:<\/p>\n<div class=\"wp_syntax\">\n<table>\n<tbody>\n<tr>\n<td class=\"line_numbers\">\n<pre>1\r\n2\r\n3\r\n4\r\n5\r\n6\r\n7\r\n8\r\n9\r\n10\r\n11\r\n12\r\n13\r\n14\r\n15\r\n16\r\n17\r\n18\r\n19\r\n20\r\n21\r\n22\r\n23\r\n24\r\n25\r\n26\r\n27\r\n28\r\n29\r\n30\r\n31\r\n32\r\n33\r\n34\r\n35\r\n36<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"php\" style=\"font-family: monospace;\"><span style=\"color: #000000; font-weight: bold;\">&lt;?php<\/span>\r\n<span style=\"color: #666666; font-style: italic;\">\/\/ se lat e lng sono state salvate su db, vengono prese di default;<\/span>\r\n<span style=\"color: #b1b100;\">if<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #000088;\">$row<\/span><span style=\"color: #009900;\">[<\/span><span style=\"color: #0000ff;\">'lat'<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #339933;\">!=<\/span><span style=\"color: #0000ff;\">\"\"<\/span> and <span style=\"color: #000088;\">$row<\/span><span style=\"color: #009900;\">[<\/span><span style=\"color: #0000ff;\">'lng'<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #339933;\">!=<\/span><span style=\"color: #0000ff;\">\"\"<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #009900;\">{<\/span><span style=\"color: #000000; font-weight: bold;\">?&gt;<\/span>\r\n\t&lt;script type=\"text\/javascript\"&gt;\r\n\tvar lat='<span style=\"color: #000000; font-weight: bold;\">&lt;?php echo <\/span><span style=\"color: #000088;\">$row<\/span><span style=\"color: #009900;\">[<\/span><span style=\"color: #0000ff;\">'lat'<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #000000; font-weight: bold;\">?&gt;<\/span>';\r\n\tvar lng='<span style=\"color: #000000; font-weight: bold;\">&lt;?php echo <\/span><span style=\"color: #000088;\">$row<\/span><span style=\"color: #009900;\">[<\/span><span style=\"color: #0000ff;\">'lng'<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #000000; font-weight: bold;\">?&gt;<\/span>';\r\n\t$(window).load(function(){\r\n\t\tinitialize();\r\n\t});\r\n\t&lt;\/script&gt;\r\n<span style=\"color: #000000; font-weight: bold;\">&lt;?php<\/span>\r\n\r\n<span style=\"color: #666666; font-style: italic;\">\/\/ se non esistono, centro la mappa in base all'indirizzo<\/span>\r\n<span style=\"color: #009900;\">}<\/span><span style=\"color: #b1b100;\">elseif<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #990000;\">isset<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #000088;\">$row<\/span><span style=\"color: #009900;\">[<\/span><span style=\"color: #0000ff;\">'citta'<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #009900;\">)<\/span> and <span style=\"color: #000088;\">$row<\/span><span style=\"color: #009900;\">[<\/span><span style=\"color: #0000ff;\">'citta'<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #339933;\">!=<\/span><span style=\"color: #0000ff;\">''<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #009900;\">{<\/span><span style=\"color: #000000; font-weight: bold;\">?&gt;<\/span>\r\n\t&lt;script type=\"text\/javascript\"&gt;\r\n\t\tvar address=\"<span style=\"color: #000000; font-weight: bold;\">&lt;?php echo <\/span><span style=\"color: #000088;\">$row<\/span><span style=\"color: #009900;\">[<\/span><span style=\"color: #0000ff;\">'indirizzo'<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #339933;\">.<\/span><span style=\"color: #0000ff;\">\", \"<\/span><span style=\"color: #339933;\">.<\/span><span style=\"color: #000088;\">$row<\/span><span style=\"color: #009900;\">[<\/span><span style=\"color: #0000ff;\">'citta'<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #339933;\">.<\/span><span style=\"color: #0000ff;\">\" \"<\/span><span style=\"color: #339933;\">.<\/span><span style=\"color: #000088;\">$row<\/span><span style=\"color: #009900;\">[<\/span><span style=\"color: #0000ff;\">'provincia'<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #000000; font-weight: bold;\">?&gt;<\/span>\";\r\n\t\t$(window).load(function(){\r\n\t\t\tinitialize();\r\n\t\t\tcodeAddress(address);\r\n\t\t});\r\n\t&lt;\/script&gt;\r\n<span style=\"color: #000000; font-weight: bold;\">&lt;?php<\/span>\r\n\r\n<span style=\"color: #666666; font-style: italic;\">\/\/ se non esiste nemmeno l'indirizzo, setto la mappa in un indirizzo di default<\/span>\r\n<span style=\"color: #009900;\">}<\/span><span style=\"color: #b1b100;\">else<\/span><span style=\"color: #009900;\">{<\/span><span style=\"color: #000000; font-weight: bold;\">?&gt;<\/span>\r\n\t&lt;script type=\"text\/javascript\"&gt;\r\n\t\tvar lat='0';\r\n\t\tvar lng='0';\r\n\t\tvar address=\"verona, italia\";\r\n\t\t$(window).load(function(){\r\n\t\t\tinitialize();\r\n\t\t\tcodeAddress(address);\r\n\t\t});\r\n\t&lt;\/script&gt;\r\n<span style=\"color: #000000; font-weight: bold;\">&lt;?php<\/span> <span style=\"color: #009900;\">}<\/span><span style=\"color: #000000; font-weight: bold;\">?&gt;<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>1) La prima condizione si verifica se nei dati estratti dal database troviamo i campi <code>lat<\/code> e <code>lng<\/code> non vuoti, cio\u00e8 se all&#8217;utente sono gi\u00e0 state salvate in precedenza delle coordinate. In questo caso le coordinate per inizializzare la mappa all&#8217;apertura della pagina risultano essere esattamente quelle del database.<\/p>\n<p>2) La seconda condizione si verifica nel caso in cui si \u00e8 premuto sul pulsante <code>Ricarica la mappa<\/code>: in questo caso viene preso l&#8217;indirizzo fisico dei quattro input, che viene passato nella funzione <code>codeAddress()<\/code>, la quale lo convertir\u00e0 in nuove coordinate (la mappa sar\u00e0 aggiornata in base a queste).<\/p>\n<p>3) Infine, la condizione di default prende un indirizzo di base da noi stabilito: nel nostro caso &#8220;Verona&#8221;. Sar\u00e0 passato nello stesso modo del punto 2. Questa condizione, quindi, si verificher\u00e0 anche all&#8217;apertura della pagina nel caso in cui l&#8217;utente estratto dal database abbia i campi <code>lat<\/code> e <code>lng<\/code> vuoti.<\/p>\n<h2>Google_maps.js<\/h2>\n<p>Le funzioni presenti nel javascript sono fondamentalmente quelle che abbiamo visto nell&#8217;articolo precedente. Come noterete, per\u00f2, nella funzione <code>initialize()<\/code> (che sar\u00e0 richiamata in <code>index.php<\/code>) \u00e8 stata aggiunta questa riga:<\/p>\n<div class=\"wp_syntax\">\n<table>\n<tbody>\n<tr>\n<td class=\"line_numbers\">\n<pre>1<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"javascript\" style=\"font-family: monospace;\">geocoder <span style=\"color: #339933;\">=<\/span> <span style=\"color: #003366; font-weight: bold;\">new<\/span> google.<span style=\"color: #660066;\">maps<\/span>.<span style=\"color: #660066;\">Geocoder<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Il Geocoder \u00e8 <strong>la chiave che ci permette di convertire un indirizzo civico in latitudine e longitudine<\/strong>, richiamando le api di Google Maps. Senza di questa, otterremo un errore nel codice del browser che ci impedir\u00e0 di caricare la mappa.<br \/>\nCon questa riga, dunque, inizializzeremo l&#8217;oggetto <code>geocoder<\/code> e potremmo richiamare dove serve la funzione <code>codeAddress()<\/code> (punti 2 e 3 delle condizioni nell&#8217;<code>index.php<\/code>). Il codice:<\/p>\n<div class=\"wp_syntax\">\n<table>\n<tbody>\n<tr>\n<td class=\"line_numbers\">\n<pre>1\r\n2\r\n3\r\n4\r\n5\r\n6\r\n7\r\n8\r\n9\r\n10\r\n11\r\n12\r\n13<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"javascript\" style=\"font-family: monospace;\"><span style=\"color: #006600; font-style: italic;\">\/\/ funzione che trasforma un indirizzo in coordinate, e le imposta sulla mappa e negli input<\/span>\r\n<span style=\"color: #003366; font-weight: bold;\">function<\/span> codeAddress<span style=\"color: #009900;\">(<\/span>address<span style=\"color: #009900;\">)<\/span> <span style=\"color: #009900;\">{<\/span>\r\n\tgeocoder.<span style=\"color: #660066;\">geocode<\/span><span style=\"color: #009900;\">(<\/span> <span style=\"color: #009900;\">{<\/span> <span style=\"color: #3366cc;\">'address'<\/span><span style=\"color: #339933;\">:<\/span> address<span style=\"color: #009900;\">}<\/span><span style=\"color: #339933;\">,<\/span> <span style=\"color: #003366; font-weight: bold;\">function<\/span><span style=\"color: #009900;\">(<\/span>results<span style=\"color: #339933;\">,<\/span> <span style=\"color: #000066;\">status<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #009900;\">{<\/span>\r\n\t\t<span style=\"color: #000066; font-weight: bold;\">if<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #000066;\">status<\/span> <span style=\"color: #339933;\">==<\/span> google.<span style=\"color: #660066;\">maps<\/span>.<span style=\"color: #660066;\">GeocoderStatus<\/span>.<span style=\"color: #660066;\">OK<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #009900;\">{<\/span>\r\n\t\t\tmap.<span style=\"color: #660066;\">setCenter<\/span><span style=\"color: #009900;\">(<\/span>results<span style=\"color: #009900;\">[<\/span><span style=\"color: #cc0000;\">0<\/span><span style=\"color: #009900;\">]<\/span>.<span style=\"color: #660066;\">geometry<\/span>.<span style=\"color: #660066;\">location<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span>\r\n\t\t\tmarker.<span style=\"color: #660066;\">setPosition<\/span><span style=\"color: #009900;\">(<\/span>results<span style=\"color: #009900;\">[<\/span><span style=\"color: #cc0000;\">0<\/span><span style=\"color: #009900;\">]<\/span>.<span style=\"color: #660066;\">geometry<\/span>.<span style=\"color: #660066;\">location<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span>\r\n\t\t\t$<span style=\"color: #009900;\">(<\/span><span style=\"color: #3366cc;\">'#coord_lat'<\/span><span style=\"color: #009900;\">)<\/span>.<span style=\"color: #660066;\">val<\/span><span style=\"color: #009900;\">(<\/span>results<span style=\"color: #009900;\">[<\/span><span style=\"color: #cc0000;\">0<\/span><span style=\"color: #009900;\">]<\/span>.<span style=\"color: #660066;\">geometry<\/span>.<span style=\"color: #660066;\">location<\/span>.<span style=\"color: #660066;\">lat<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span>\r\n\t\t\t$<span style=\"color: #009900;\">(<\/span><span style=\"color: #3366cc;\">'#coord_lng'<\/span><span style=\"color: #009900;\">)<\/span>.<span style=\"color: #660066;\">val<\/span><span style=\"color: #009900;\">(<\/span>results<span style=\"color: #009900;\">[<\/span><span style=\"color: #cc0000;\">0<\/span><span style=\"color: #009900;\">]<\/span>.<span style=\"color: #660066;\">geometry<\/span>.<span style=\"color: #660066;\">location<\/span>.<span style=\"color: #660066;\">lng<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span>\r\n\t\t<span style=\"color: #009900;\">}<\/span><span style=\"color: #000066; font-weight: bold;\">else<\/span><span style=\"color: #009900;\">{<\/span>\r\n\t\t\t<span style=\"color: #000066;\">alert<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #3366cc;\">\"Geocode ha rilevato questo errore: \"<\/span> <span style=\"color: #339933;\">+<\/span> <span style=\"color: #000066;\">status<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span>\r\n\t\t<span style=\"color: #009900;\">}<\/span>\r\n\t<span style=\"color: #009900;\">}<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span>\r\n<span style=\"color: #009900;\">}<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Il metodo usato \u00e8 molto simile al solito settaggio delle coordinate: cambia soltanto l&#8217;uso di funzioni adatte per convertire l&#8217;indirizzo in coordinate.<br \/>\nOltre a centrare la mappa con le nuove coordinate, notiamo anche come aggiorniamo gli input che hanno l&#8217;id <code>coord_lat<\/code> e <code>coord_lng<\/code> tramite JQuery: assumeranno, infatti, i valori delle nuove latitudini e longitudini.<\/p>\n<div style=\"margin-top: 100px; margin-bottom: 20px;\"><strong><em>Link esterni<\/em><\/strong><\/div>\n<p><a title=\"Documentazione ufficiale di Google Maps\" href=\"http:\/\/code.google.com\/intl\/it-IT\/apis\/maps\/documentation\/javascript\/overlays.html\" target=\"_blank\">Documentazione ufficiale di Google Maps<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Uno script completo da scaricare che mostra come convertire un indirizzo immesso in coordinate adatte per la google maps, aggiornabili con un click sulla mappa.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[78],"tags":[8,52,12,11,4,6],"class_list":["post-1056","post","type-post","status-publish","format-standard","hentry","category-php-mysql","tag-google","tag-google-maps","tag-javascript","tag-jquery","tag-php","tag-script","cat-78-id"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/posts\/1056"}],"collection":[{"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/comments?post=1056"}],"version-history":[{"count":15,"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/posts\/1056\/revisions"}],"predecessor-version":[{"id":2293,"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/posts\/1056\/revisions\/2293"}],"wp:attachment":[{"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/media?parent=1056"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/categories?post=1056"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/tags?post=1056"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}