{"id":28482,"date":"2019-06-19T00:00:00","date_gmt":"2019-06-18T22:00:00","guid":{"rendered":"https:\/\/blexin.com\/?p=28482"},"modified":"2021-01-13T09:40:33","modified_gmt":"2021-01-13T08:40:33","slug":"maps-3-angular","status":"publish","type":"post","link":"https:\/\/blexin.com\/it\/blog\/maps-3-angular\/","title":{"rendered":"Maps <3 Angular"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"608\" data-attachment-id=\"28483\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/maps-3-angular\/attachment\/427c6883-62cc-44c1-be0d-4ffb824978ed\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/427c6883-62cc-44c1-be0d-4ffb824978ed.png?fit=1024%2C608&amp;ssl=1\" data-orig-size=\"1024,608\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"427c6883-62cc-44c1-be0d-4ffb824978ed\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/427c6883-62cc-44c1-be0d-4ffb824978ed.png?fit=1024%2C608&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/427c6883-62cc-44c1-be0d-4ffb824978ed.png?resize=1024%2C608&#038;ssl=1\" alt=\"\" class=\"wp-image-28483\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/427c6883-62cc-44c1-be0d-4ffb824978ed.png 1024w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/427c6883-62cc-44c1-be0d-4ffb824978ed-980x582.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/427c6883-62cc-44c1-be0d-4ffb824978ed-480x285.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Dare il giusto rilievo a dati di natura geografica non \u00e8 sempre semplice. Non basta, cio\u00e8, inserire una mappa con qualche marker in una pagina per aggiungere valore alla nostra soluzione. In questo articolo parleremo delle best practices riguardanti dati geografici che usiamo in Blexin.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L\u2019esempio sar\u00e0 un progetto Angular e useremo come dati di esempio un sottoinsieme di un dataset che ho pubblicato in una&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/sorrentmutie\/WorldSoccerStadiums\" target=\"_blank\">repository<\/a>&nbsp;pubblica di Github contenente informazioni sugli stadi di calcio nel mondo. Il formato di dati \u00e8 JSON e per ogni stadio sono disponibili le seguenti informazioni:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\n{\n\u00a0&quot;Id&quot;:8233,\n\u00a0&quot;Name&quot;:&quot;10 de Diciembre&quot;,\n\u00a0&quot;Nation&quot;:&quot;Mexico&quot;,\n\u00a0&quot;Town&quot;:&quot;Ciudad Cooperativa Cruz Azul&quot;,\n\u00a0&quot;Latitude&quot;:19.99395751953125,\n\u00a0&quot;Longitude&quot;:-99.325408935546875,\n\u00a0&quot;Capacity&quot;:&quot;17.000&quot;\n}\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Useremo strumenti messi a disposizione di Google per i quali \u00e8 necessario creare una chiave API sulla&nbsp;<a href=\"https:\/\/console.developers.google.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">developer console<\/a>. La chiave pu\u00f2 essere inserita nel progetto angular all\u2019interno del file environment.ts nel folder src\/environments.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il campione di dati a disposizione contiene 46 stadi ripartiti nella maniera seguente:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"326\" height=\"149\" data-attachment-id=\"28485\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/maps-3-angular\/attachment\/image01-20\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image01-20.png?fit=326%2C149&amp;ssl=1\" data-orig-size=\"326,149\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image01-20\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image01-20.png?fit=326%2C149&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image01-20.png?resize=326%2C149&#038;ssl=1\" alt=\"\" class=\"wp-image-28485\" srcset=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image01-20.png?w=326&amp;ssl=1 326w, https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image01-20.png?resize=300%2C137&amp;ssl=1 300w\" sizes=\"auto, (max-width: 326px) 100vw, 326px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Questa suddivisione \u00e8 gi\u00e0 un\u2019informazione importante che pu\u00f2 essere mostrata su una mappa. Google offre all\u2019interno della sua&nbsp;<a href=\"https:\/\/github.com\/FERNman\/angular-google-charts\" target=\"_blank\" rel=\"noreferrer noopener\">suite<\/a>&nbsp;di strumenti di visualizzazione dati un Geochart particolarmente adatto allo scopo. In mancanza di una libreria di componenti Angular ufficiale, abbiamo scelto un&nbsp;<a href=\"https:\/\/github.com\/FERNman\/angular-google-charts\" target=\"_blank\" rel=\"noreferrer noopener\">wrapper<\/a>&nbsp;della libreria Google Chart. Lasciando i dettagli dell\u2019installazione alla documentazione disponibile su Github, veniamo ai due problemi principali:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>La formattazione dei dati<\/li><li>La customizzazione dell\u2019aspetto grafico<\/li><\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">I dati vanno trasformati secondo lo standard dettato dalla libreria Google Chart:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\ngeoSummary = &#x5B;\n\u00a0\u00a0&#x5B;&#039;Indonesia&#039;, 10],\n\u00a0\u00a0&#x5B;&#039;Algeria&#039;, 6],\n\u00a0\u00a0&#x5B;&#039;Argentina&#039;, 7],\n\u00a0\u00a0&#x5B;&#039;Italy&#039;, 10],\n\u00a0\u00a0&#x5B;&#039;Australia&#039;, 4],\n\u00a0\u00a0&#x5B;&#039;Netherlands&#039;, 4],\n\u00a0\u00a0&#x5B;&#039;Mexico&#039;, 5],\n];\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Una possibile scelta delle impostazioni grafiche del chart pu\u00f2 essere la seguente:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"373\" data-attachment-id=\"28488\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/maps-3-angular\/attachment\/image02-19\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image02-19.png?fit=2224%2C810&amp;ssl=1\" data-orig-size=\"2224,810\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image02-19\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image02-19.png?fit=1024%2C373&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image02-19.png?resize=1024%2C373&#038;ssl=1\" alt=\"\" class=\"wp-image-28488\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image02-19-980x357.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image02-19-480x175.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Per l\u2019asse dei valori, \u00e8 possibile scegliere un array di stringhe indicanti colori (colorAxis). Nell\u2019esempio ho utilizzato [\u2018purple\u2019,\u2019blue\u2019,\u2019green\u2019]. E\u2019 possibile indicare il colore per le nazioni che non hanno rappresentanza (datalessRegionColor) e poi il colore di sfondo della mappa (backgroundColor). Una scelta alternativa \u00e8 quella dei markers che hanno un raggio proporzionale al valore da mostrare (displayMode: &#8216;markers&#8217;):<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"375\" data-attachment-id=\"28490\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/maps-3-angular\/attachment\/image03-17\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image03-17.png?fit=2222%2C814&amp;ssl=1\" data-orig-size=\"2222,814\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image03-17\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image03-17.png?fit=1024%2C375&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image03-17.png?resize=1024%2C375&#038;ssl=1\" alt=\"\" class=\"wp-image-28490\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image03-17-980x359.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image03-17-480x176.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Il codice typescript che imposta il componente \u00e8 il seguente:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\nprivate SetChart(data: any): MyChart\u00a0 {\n\u00a0\u00a0\u00a0\u00a0const mychart: MyChart = {\n\u00a0\u00a0\u00a0\u00a0\u00a0type: &#039;GeoChart&#039;,\n\u00a0\u00a0\u00a0\u00a0\u00a0data,\n\u00a0\u00a0\u00a0\u00a0\u00a0options: {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0colorAxis: {colors: &#x5B;&#039;purple&#039;, &#039;blue&#039;, &#039;green&#039;]},\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0backgroundColor: &#039;#81d4fa&#039;,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0datalessRegionColor: &#039;white&#039;\n\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0};\n\u00a0\u00a0\u00a0\u00a0return mychart;\n}\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Questo \u00e8 invece il template html:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: xml; title: ; notranslate\" title=\"\">\n&lt;google-chart class=&quot;chart&quot;\n\u00a0\u00a0\u00a0&#x5B;height]=&quot;400&quot;\n\u00a0\u00a0\u00a0&#x5B;type]=&quot;myChangingCart.type&quot;\n\u00a0\u00a0\u00a0&#x5B;data]=&quot;myChangingCart.data&quot;\n\u00a0\u00a0\u00a0&#x5B;options]=&quot;myChangingCart.options&quot;\n\u00a0\u00a0\u00a0(select)=&quot;onSelect($event)&quot;&gt;\n&lt;\/google-chart&gt;\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Il componente google-chart offre l\u2019evento di selezione di una nazione (intesa come poligono) sulla mappa (select). L\u2019argomento passato offre una propriet\u00e0 row collegabile all\u2019array di dati utilizzato. La nazione selezionata (come nome) verr\u00e0 utilizzata per mostrare la mappa di dettaglio.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\nonSelect(event: ChartEvent) {\n\u00a0\u00a0\u00a0if (event &amp;&amp; event&#x5B;0] &amp;&amp; event&#x5B;0].row &gt;= 0) {\n\u00a0\u00a0\u00a0\u00a0\u00a0const row = event&#x5B;0].row;\n\u00a0\u00a0\u00a0\u00a0\u00a0this.selectedNation = this.geoSummary&#x5B;row]&#x5B;0];\n\u00a0\u00a0\u00a0}\n}\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Il progetto contiene un componente di dettaglio consistente in una mappa di Google mostrante gli stadi della nazione selezionata. Al cambiare della selezione nel componente principale, la mappa viene centrata sulla nazione corrispondente e i marker degli stadi vengono aggiornati.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"275\" data-attachment-id=\"28494\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/maps-3-angular\/attachment\/image04-15\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image04-15.png?fit=2240%2C602&amp;ssl=1\" data-orig-size=\"2240,602\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image04-15\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image04-15.png?fit=1024%2C275&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image04-15.png?resize=1024%2C275&#038;ssl=1\" alt=\"\" class=\"wp-image-28494\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image04-15-980x263.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image04-15-480x129.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Al componente di dettaglio (app-details), quindi, viene passata come @Input() la stringa indicante la nazione selezionata:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\n&lt;app-details &#x5B;nation]=&#039;selectedNation&#039;&gt;&lt;\/app-details&gt;\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">app-details utilizza un componente molto noto chiamato Angular Google Maps (agm) disponibile al seguente&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/angular-maps.com\/guides\/getting-started\/\" target=\"_blank\">indirizzo<\/a>.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\n&lt;agm-map #map &#x5B;zoom]=&quot;zoom&quot; &#x5B;latitude]=&quot;latitude&quot; &#x5B;longitude]=&quot;longitude&quot;\n\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0&#x5B;mapTypeId]=&quot;&#039;hybrid&#039;&quot;&gt;\n&lt;\/agm-map&gt;\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">app-details implementa OnChanges nel metodo ngOnChanges, dove estraiamo da un servizio gli stadi appartenenti alla nazione selezionata. Nel subscribe al metodo del servizio gestiamo anche il cambio del centro della mappa, calcolato usando le latitudini e longitudini degli stadi.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\nngOnChanges(changes: SimpleChanges): void {\n\u00a0\u00a0\u00a0this.zoom = 4;\n\u00a0\u00a0\u00a0this.nation = changes.nation.currentValue;\n\u00a0\u00a0\u00a0if (this.nation.length &gt; 0) {\n\u00a0\u00a0\u00a0\u00a0\u00a0this.data.getArenas(this.nation).subscribe(x =&gt; {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0this.arenas = x;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0this.center = this.centerMap();\n\u00a0\u00a0\u00a0\u00a0\u00a0});\n\u00a0\u00a0\u00a0}\n}\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Non basta per\u00f2 calcolare le medie aritmetiche delle latitudini e longitudini. Questo metodo funziona bene a basse latitudini ma tende a peggiorare a latitudini pi\u00f9 alte fino a divergere all\u2019avvicinarsi ai poli. Il metodo convenzionale \u00e8 quello di convertire latitudine (\u03d5i) e longitudine (\u03bbi) in un punto tridimensionale usando la seguente formula:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"618\" height=\"92\" data-attachment-id=\"28497\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/maps-3-angular\/attachment\/image05-15\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image05-15.png?fit=618%2C92&amp;ssl=1\" data-orig-size=\"618,92\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image05-15\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image05-15.png?fit=618%2C92&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image05-15.png?resize=618%2C92&#038;ssl=1\" alt=\"\" class=\"wp-image-28497\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image05-15.png 618w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image05-15-480x71.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 618px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Ora \u00e8 possibile trovare la media di questi punti tridimensionali (ossia un punto sulla sfera) e convertirla nuovamente in latitudine longitudine a partire dalla seguente relazione:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"248\" height=\"92\" data-attachment-id=\"28500\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/maps-3-angular\/attachment\/image06-12\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image06-12.png?fit=248%2C92&amp;ssl=1\" data-orig-size=\"248,92\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image06-12\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image06-12.png?fit=248%2C92&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image06-12.png?resize=248%2C92&#038;ssl=1\" alt=\"\" class=\"wp-image-28500\"\/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"350\" height=\"88\" data-attachment-id=\"28502\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/maps-3-angular\/attachment\/image07-11\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image07-11.png?fit=350%2C88&amp;ssl=1\" data-orig-size=\"350,88\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image07-11\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image07-11.png?fit=350%2C88&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image07-11.png?resize=350%2C88&#038;ssl=1\" alt=\"\" class=\"wp-image-28502\" srcset=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image07-11.png?w=350&amp;ssl=1 350w, https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image07-11.png?resize=300%2C75&amp;ssl=1 300w\" sizes=\"auto, (max-width: 350px) 100vw, 350px\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Il codice contiene una classe helper per gestire tutte queste operazioni aritmetiche di conversione. Il calcolo del centro della mappa a partire dall\u2019array degli stadi \u00e8 il seguente:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\nprivate centerMap(): MyCoordinates {\n\u00a0\u00a0\u00a0const helper = new GeographicalHelper();\n\u00a0\u00a0\u00a0const total = this.arenas.length;\n\u00a0\n\u00a0\u00a0\u00a0if (total &gt; 0) {\n\u00a0\u00a0\u00a0\u00a0\u00a0const points = this.ThreeDimensionalPointsOfArenas(this.arenas);\n\u00a0\u00a0\u00a0\u00a0\u00a0const averagePoint = helper.calculateAveragePoint(points);\n\u00a0\u00a0\u00a0\u00a0\u00a0return helper.convertThreeDimensionalPointToLatitudeAndLongitude(averagePoint);\n\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0return { latitude : 0, longitude : 0};\n}\n\u00a0\nprivate ThreeDimensionalPointsOfArenas(arenas: Arena&#x5B;]): ThreeDimensionalPoint&#x5B;] {\n\u00a0\u00a0\u00a0const helper = new GeographicalHelper();\n\u00a0\u00a0\u00a0const points = &#x5B;];\n\u00a0\u00a0\u00a0arenas.forEach( arena =&gt; {\n\u00a0\u00a0\u00a0\u00a0\u00a0points.push(helper.convertLatitudeAndLongitudeToThreeDimensionalPoint({latitude: arena.Latitude, longitude: arena.Longitude}));\n\u00a0\u00a0\u00a0});\n\u00a0\u00a0\u00a0return points;\n}\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Il componente agm-map consente di inserire dei marker sulla mappa. Nel nostro esempio, per ogni arena inseriamo un marker. E\u2019 possibile anche gestire l\u2019evento di click del singolo marker. E\u2019 sufficiente innestare nel componente agm-map un *ngFor.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\n&lt;agm-map &#x5B;zoom]=&quot;zoom&quot; &#x5B;latitude]=&quot;center.latitude&quot; &#x5B;longitude]=&quot;center.longitude&quot;\n\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0&#x5B;mapTypeId]=&quot;&#039;hybrid&#039;&quot;&gt;\n\u00a0\u00a0\u00a0 \u00a0&lt;agm-marker \u00a0*ngFor=&quot;let locationItem of arenas;&quot;\n\u00a0\u00a0\u00a0 \u00a0&#x5B;latitude]=&quot;locationItem.Latitude&quot; &#x5B;longitude]=&quot;locationItem.Longitude&quot;\n\u00a0\u00a0\u00a0 \u00a0(markerClick)=&quot;clickedMarker($event)&quot;&gt;\n\u00a0\u00a0\u00a0 \u00a0&lt;\/agm-marker&gt;\n&lt;\/agm-map&gt;\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Possiamo sfruttare l\u2019evento markerClick per centrare la mappa sul marker e aumentare lo zoom.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\nclickedMarker(info: any) {\n\u00a0\u00a0\u00a0this.zoom = 16;\n\u00a0\u00a0\u00a0this.center.latitude = info.latitude;\n\u00a0\u00a0\u00a0this.center.longitude = info.longitude;\n}\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Ad ogni marker, infine, possiamo associare una finestra informativa (agm-info-window) per mostrare informazioni pi\u00f9 dettagliate sullo stadio selezionato.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: xml; title: ; notranslate\" title=\"\">\n&lt;agm-marker \u00a0*ngFor=&quot;let locationItem of arenas;&quot;\n\u00a0\u00a0\u00a0 \u00a0&#x5B;latitude]=&quot;locationItem.Latitude&quot; &#x5B;longitude]=&quot;locationItem.Longitude&quot;\n\u00a0\u00a0\u00a0 \u00a0(markerClick)=&quot;clickedMarker($event)&quot;&gt;\n\u00a0\u00a0\u00a0 \u00a0 \u00a0&lt;agm-info-window #info &#x5B;disableAutoPan]=&quot;true&quot;&gt;\n\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0&lt;div class=&quot;card&quot;&gt;\n\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0&lt;div class=&quot;card-body&quot;&gt;\n\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0&lt;h5 class=&quot;card-title&quot;&gt;{{locationItem.Name}}&lt;\/h5&gt;\n\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;h6 class=&quot;card-subtitle mb-1&quot;&gt;Capacity:{{locationItem.Capacity}}&lt;\/h6&gt;\n\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0&lt;a (click)=&quot;findHotels(locationItem)&quot; class=&quot;card-link&quot;&gt;\nClick to find nearby hotels&lt;\/a&gt;\n\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0 \u00a0 \u00a0&lt;\/agm-info-window&gt;\n&lt;\/agm-marker&gt;\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Nella agm-info-window possiamo aggiungere un link per avviare ulteriori ricerche (ad esempio gli alberghi in zona):<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"261\" data-attachment-id=\"28505\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/maps-3-angular\/attachment\/image08-9\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image08-9.png?fit=1112%2C283&amp;ssl=1\" data-orig-size=\"1112,283\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image08-9\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image08-9.png?fit=1024%2C261&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image08-9.png?resize=1024%2C261&#038;ssl=1\" alt=\"\" class=\"wp-image-28505\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image08-9-1024x261.png 1024w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image08-9-980x249.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image08-9-480x122.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">La repository del progetto \u00e8 disponibile al seguente&nbsp;<a href=\"https:\/\/github.com\/sorrentmutie\/angular-geography\" target=\"_blank\" rel=\"noreferrer noopener\">indirizzo<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Alla prossima!<\/p>\n\n\n\n\n","protected":false},"excerpt":{"rendered":"<p>Vediamo come mostrare informazioni geografiche con Google Maps e Angular<\/p>\n","protected":false},"author":196716245,"featured_media":28483,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"off","_et_pb_old_content":"","_et_gb_content_width":"","_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","_crdt_document":"","inline_featured_image":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_wpas_customize_per_network":false,"jetpack_post_was_ever_published":false},"categories":[688637374],"tags":[688637387],"class_list":["post-28482","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-angular"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Maps<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blexin.com\/it\/blog\/maps-3-angular\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Maps\" \/>\n<meta property=\"og:description\" content=\"Vediamo come mostrare informazioni geografiche con Google Maps e Angular\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blexin.com\/it\/blog\/maps-3-angular\/\" \/>\n<meta property=\"og:site_name\" content=\"Blexin\" \/>\n<meta property=\"article:published_time\" content=\"2019-06-18T22:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-01-13T08:40:33+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i1.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/427c6883-62cc-44c1-be0d-4ffb824978ed.png?fit=1024%2C608&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"608\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Salvatore Sorrentino\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Salvatore Sorrentino\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/maps-3-angular\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/maps-3-angular\\\/\"},\"author\":{\"name\":\"Salvatore Sorrentino\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/#\\\/schema\\\/person\\\/354db2bc97cac71c2ceeca21a92d5bed\"},\"headline\":\"Maps\",\"datePublished\":\"2019-06-18T22:00:00+00:00\",\"dateModified\":\"2021-01-13T08:40:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/maps-3-angular\\\/\"},\"wordCount\":1,\"image\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/maps-3-angular\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/blexin.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/427c6883-62cc-44c1-be0d-4ffb824978ed.png?fit=1024%2C608&ssl=1\",\"keywords\":[\"Angular\"],\"articleSection\":[\"Blog\"],\"inLanguage\":\"it-IT\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/maps-3-angular\\\/\",\"url\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/maps-3-angular\\\/\",\"name\":\"Maps\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/maps-3-angular\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/maps-3-angular\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/blexin.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/427c6883-62cc-44c1-be0d-4ffb824978ed.png?fit=1024%2C608&ssl=1\",\"datePublished\":\"2019-06-18T22:00:00+00:00\",\"dateModified\":\"2021-01-13T08:40:33+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/#\\\/schema\\\/person\\\/354db2bc97cac71c2ceeca21a92d5bed\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/maps-3-angular\\\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/maps-3-angular\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/maps-3-angular\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/blexin.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/427c6883-62cc-44c1-be0d-4ffb824978ed.png?fit=1024%2C608&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/blexin.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/427c6883-62cc-44c1-be0d-4ffb824978ed.png?fit=1024%2C608&ssl=1\",\"width\":1024,\"height\":608},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/maps-3-angular\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/blexin.com\\\/it\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Maps\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/#website\",\"url\":\"https:\\\/\\\/blexin.com\\\/it\\\/\",\"name\":\"Blexin\",\"description\":\"Con noi \u00e8 semplice\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blexin.com\\\/it\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/#\\\/schema\\\/person\\\/354db2bc97cac71c2ceeca21a92d5bed\",\"name\":\"Salvatore Sorrentino\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a6ec0dc827d2acaa55df9dbf1007e23f6fcb8c9436df52ab48274bb2221085bf?s=96&d=identicon&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a6ec0dc827d2acaa55df9dbf1007e23f6fcb8c9436df52ab48274bb2221085bf?s=96&d=identicon&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a6ec0dc827d2acaa55df9dbf1007e23f6fcb8c9436df52ab48274bb2221085bf?s=96&d=identicon&r=g\",\"caption\":\"Salvatore Sorrentino\"},\"url\":\"https:\\\/\\\/blexin.com\\\/it\\\/author\\\/salvatore-sorrentinoblexin-com\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Maps","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blexin.com\/it\/blog\/maps-3-angular\/","og_locale":"it_IT","og_type":"article","og_title":"Maps","og_description":"Vediamo come mostrare informazioni geografiche con Google Maps e Angular","og_url":"https:\/\/blexin.com\/it\/blog\/maps-3-angular\/","og_site_name":"Blexin","article_published_time":"2019-06-18T22:00:00+00:00","article_modified_time":"2021-01-13T08:40:33+00:00","og_image":[{"width":1024,"height":608,"url":"https:\/\/i1.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/427c6883-62cc-44c1-be0d-4ffb824978ed.png?fit=1024%2C608&ssl=1","type":"image\/png"}],"author":"Salvatore Sorrentino","twitter_card":"summary_large_image","twitter_misc":{"Scritto da":"Salvatore Sorrentino","Tempo di lettura stimato":"5 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blexin.com\/it\/blog\/maps-3-angular\/#article","isPartOf":{"@id":"https:\/\/blexin.com\/it\/blog\/maps-3-angular\/"},"author":{"name":"Salvatore Sorrentino","@id":"https:\/\/blexin.com\/it\/#\/schema\/person\/354db2bc97cac71c2ceeca21a92d5bed"},"headline":"Maps","datePublished":"2019-06-18T22:00:00+00:00","dateModified":"2021-01-13T08:40:33+00:00","mainEntityOfPage":{"@id":"https:\/\/blexin.com\/it\/blog\/maps-3-angular\/"},"wordCount":1,"image":{"@id":"https:\/\/blexin.com\/it\/blog\/maps-3-angular\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/427c6883-62cc-44c1-be0d-4ffb824978ed.png?fit=1024%2C608&ssl=1","keywords":["Angular"],"articleSection":["Blog"],"inLanguage":"it-IT"},{"@type":"WebPage","@id":"https:\/\/blexin.com\/it\/blog\/maps-3-angular\/","url":"https:\/\/blexin.com\/it\/blog\/maps-3-angular\/","name":"Maps","isPartOf":{"@id":"https:\/\/blexin.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blexin.com\/it\/blog\/maps-3-angular\/#primaryimage"},"image":{"@id":"https:\/\/blexin.com\/it\/blog\/maps-3-angular\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/427c6883-62cc-44c1-be0d-4ffb824978ed.png?fit=1024%2C608&ssl=1","datePublished":"2019-06-18T22:00:00+00:00","dateModified":"2021-01-13T08:40:33+00:00","author":{"@id":"https:\/\/blexin.com\/it\/#\/schema\/person\/354db2bc97cac71c2ceeca21a92d5bed"},"breadcrumb":{"@id":"https:\/\/blexin.com\/it\/blog\/maps-3-angular\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blexin.com\/it\/blog\/maps-3-angular\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/blexin.com\/it\/blog\/maps-3-angular\/#primaryimage","url":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/427c6883-62cc-44c1-be0d-4ffb824978ed.png?fit=1024%2C608&ssl=1","contentUrl":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/427c6883-62cc-44c1-be0d-4ffb824978ed.png?fit=1024%2C608&ssl=1","width":1024,"height":608},{"@type":"BreadcrumbList","@id":"https:\/\/blexin.com\/it\/blog\/maps-3-angular\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blexin.com\/it\/"},{"@type":"ListItem","position":2,"name":"Maps"}]},{"@type":"WebSite","@id":"https:\/\/blexin.com\/it\/#website","url":"https:\/\/blexin.com\/it\/","name":"Blexin","description":"Con noi \u00e8 semplice","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blexin.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Person","@id":"https:\/\/blexin.com\/it\/#\/schema\/person\/354db2bc97cac71c2ceeca21a92d5bed","name":"Salvatore Sorrentino","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/secure.gravatar.com\/avatar\/a6ec0dc827d2acaa55df9dbf1007e23f6fcb8c9436df52ab48274bb2221085bf?s=96&d=identicon&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a6ec0dc827d2acaa55df9dbf1007e23f6fcb8c9436df52ab48274bb2221085bf?s=96&d=identicon&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a6ec0dc827d2acaa55df9dbf1007e23f6fcb8c9436df52ab48274bb2221085bf?s=96&d=identicon&r=g","caption":"Salvatore Sorrentino"},"url":"https:\/\/blexin.com\/it\/author\/salvatore-sorrentinoblexin-com\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/427c6883-62cc-44c1-be0d-4ffb824978ed.png?fit=1024%2C608&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/pcyUBx-7po","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/posts\/28482","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/users\/196716245"}],"replies":[{"embeddable":true,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/comments?post=28482"}],"version-history":[{"count":9,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/posts\/28482\/revisions"}],"predecessor-version":[{"id":28513,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/posts\/28482\/revisions\/28513"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/media\/28483"}],"wp:attachment":[{"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/media?parent=28482"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/categories?post=28482"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/tags?post=28482"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}