Google maps: Assegnare icone personalizzate a markers estratti da mysql.

Federico Serafini

Nuovo Utente
16 Nov 2013
2
0
0
Ciao ragazzi un saluto a tutti e complimenti per il forum. Mi serviva un aiuto ho un database mysql con

questa struttura:

Codice:
INSERT INTO `markers` (`id`, `name`, `address`, `lat`, `lng`, `comune`, `type`) VALUES(2, 'Buddha Thai & 

Bar', '2222 2nd Ave, Seattle, WA', 41.447948, 12.174707, 'san cesareo', 'bar');
INSERT INTO `markers` (`id`, `name`, `address`, `lat`, `lng`, `comune`, `type`) VALUES(3, 'The Melting Pot', 

'14 Mercer St, Seattle, WA', 41.447948, 12.174707, 'civitavecchia', 'restaurant');

Il database è collegato ad una mappa di google maps che selezionata la regione la provincia e il comune mi

estrae i markers di quel comune, la mappa è questa:

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Mappa</title>
<script type="text/javascript" src="js/lists.js"></script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript" src="js/util.js"></script>
<script type="text/javascript">
  var infowindow;
  var map;
  var markersArray = []; richiesta


  function initialize() {
	geocoder = new google.maps.Geocoder();
    var myLatlng = new google.maps.LatLng(41.447948, 12.629052);
    var myOptions = {
      zoom: 13,
      center: myLatlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    
  }

    function clearOverlays() {
		  if (markersArray) {
			for (i in markersArray) {
			  markersArray[i].setMap(null);
			}
		  }
		}


    function geocode() {
	    clearOverlays(); //richiama la funzione per cancellare eventuali precedenti markers
		var ind1 = document.getElementById("comuni").value;
		var ind2 = " ,IT";
		var address = ind1 + ind2; // se cercassimo solo "Roma" potremmo rischiare di trovare una 

citta' con nome simile, pertanto aggiungo anche ,IT
		geocoder.geocode({
            'address': address,
            'partialmatch': true
        }, geocodeResult);
			var link = "generazione_xml.php?comune=";
	  downloadUrl(link+ind1, function(data) { // trasmetto a generazione_xml con GET il nome del comune 

di cui voglio estrarre i markers
      var markers = data.documentElement.getElementsByTagName("marker");
	 
      for (var i = 0; i < markers.length; i++) {
	  	var latlng = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")),
                                    parseFloat(markers[i].getAttribute("lng")));
        var marker = createMarker(markers[i].getAttribute("name"), latlng);
       }
     });
    }

    function geocodeResult(results, status) {
        if (status == 'OK' && results.length > 0) {
            map.fitBounds(results[0].geometry.viewport);
        } else {
            alert("Geocode was not successful for the following reason: " + status);
        }
    }

  
	  function createMarker(name, latlng) {
		var marker = new google.maps.Marker({position: latlng, map: map});
		markersArray.push(marker);
		google.maps.event.addListener(marker, "click", function() {
		  if (infowindow) infowindow.close();
		  infowindow = new google.maps.InfoWindow({content: name});
		  infowindow.open(map, marker);
		});
		return marker;
	  }

</script>
</head>

<body onload="initialize()">
	<div id="contenitore">
		<div id="contenuto">
			<form id="comuneScelto">
            <fieldset>
            <label for="regioni">Regioni</label><br />
            <select name="regioni" id="regioni" onChange="loadList('province', getSelected(this))" >
            </select><br />
            <label for="province">Province</label><br />
            <select name="province" id="province" onChange="loadList('comuni', getSelected(this))">
              <option>-- Seleziona prima una regione --</option>
            </select><br />
            <label for="comuni">Comuni</label><br />
            <select onchange="geocode()" name="comuni" id="comuni">
            	<option>-- Seleziona prima una regione --</option>
            </select><br />
            </fieldset>
            </form>
            <!-- carica il contenuto della lista regioni  -->
           
  
			<div id="map_canvas" style="width:100%; height:400px; margin-top:3em;"></div>
			
		</div><!-- /contenuto -->

		<div class="clear"></div><!-- /clear -->


	</div><!-- /contenitore -->

<!-- ecco lo script che precarica la lista delle regioni -->
<script type="text/javascript">
//<![CDATA[
loadList('regioni', 0);
//]]>
</script>
</body>
</html>
Tutto funziona perfettamente. Adesso però vorrei fare in modo di inserire delle icone diverse ai markers in
base all'attributo "TYPE" che trovo nel database. In pratica dare un icona mettiamo rossa per i bar e blu
per i restaurant.
Se servono posto anche gli script e i file collegati.

Se qualcuno sa aiutarmi grazie altrimenti grazie comunque.
 
Ultima modifica di un moderatore:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, per cambiare l'icona del marker dovrebbe essere sufficiente passare l'immagine come parametro
Codice:
var blueIcon = "http://www.google.com/intl/en_us/mapfiles/ms/micons/blue-dot.png";
var redIcon = "http://www.google.com/intl/en_us/mapfiles/ms/micons/red-dot.png";

var marker = new google.maps.Marker({position: latlng, map: map, icon:blueIcon});
dovrai fare in modo di estrarre dal db anche il parametro che ti indica quale icona usare e passarlo alla funzione createMarker()
Codice:
function createMarker(name, latlng, icona) {
       var marker = new google.maps.Marker({position: latlng, map: map, icon:icona});
 

Federico Serafini

Nuovo Utente
16 Nov 2013
2
0
0
Ciao e grazie, ho provato ad inserire il codice ma non funzione credo manchi il riferimento all'attributo TYPE del database saresti cosi gentile da inserire il codice direttamente nella mia mappa. Grazie.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
credo che devi cambiare la chiamata in questo modo
Codice:
var marker = createMarker(markers[i].getAttribute("name"), latlng, markers[i].getAttribute("type"));
e la funzione piu o meno cosi
Codice:
function createMarker(name, latlng, icona) {
        var img;
        img = "http://www.google.com/intl/en_us/mapfiles/ms/micons/blue-dot.png";
        if(icona == "bar") {
            img = "http://www.google.com/intl/en_us/mapfiles/ms/micons/red-dot.png";
        }
        var marker = new google.maps.Marker({position: latlng, map: map, icon:img});
ma, non hai scritto tu il codice?
 
Discussioni simili
Autore Titolo Forum Risposte Data
S Assegnare link ad un marker di google maps Javascript 2
M Questa pagina non carica correttamente Google Maps: aiuto!! HTML e CSS 1
maxnegri Icon Multi Marker Personalizzate Google Maps Javascript 0
B "Scheda" di Google che appare su Google Maps Discussioni Varie 0
Tommy03 [PHP] Iframe Google Maps PHP 1
syndr0m3 [WordPress] Google Maps WordPress 0
A [Javascript] Mostrare un marker se è vicino al risultato di ricerca con google maps Javascript 3
A [HTML] alternative a Google Maps - aggiornamento condizioni giugno 2018 HTML e CSS 6
T [Javascript] Google maps con puntatore animato funziona solo in locale Javascript 1
T Api google maps Sviluppo app per Android 1
simgia [Javascript] Google maps help! Javascript 1
H Condivisione posizione Google Maps e navigazione automatica Sviluppo app per Android 0
booklisa scrollwheel: true Wordpress e google maps CMS (Content Management System) 0
booklisa Wordpress e cartina google maps WordPress 0
felino Indicizzazione e Google Maps SEO e Posizionamento 1
base90 [PHP] [HTML] Google Maps con due indirizzi PHP 12
M [Javascript] Percorso predefinito Google Maps Javascript 0
S Google Maps e XMLHttpRequest Javascript 0
ecosito Google Maps: Centrare il marker ed editare il fumetto PHP 1
R Javascript e html - estrazione EXIF da jpg con link per geolocalizzazione google maps Javascript 0
A Image Overlays Google Maps App Inventor 2 Presentati al Forum 0
Francesco Polese Segnaposto Google Maps dinamico PHP 5
A Rimuovere il Marker di Google Maps Javascript 0
L Google maps aggiunta makers da php Javascript 4
M funzioni google maps sovrapposizione markers Javascript 0
M calcola percorso google maps Javascript 0
M Caricare più google maps con un ciclo Javascript 1
A Inserire Marker a Google Maps Javascript 3
K App che utilizzi le api di google maps Sviluppo app per Android 1
F Parola chiave posizionata su Google Maps è posizionamento? SEO e Posizionamento 10
A [Java] form con indirizzi presi da google maps Java 0
felino Google Maps - Marker con la stessa latitudine e longitudine HTML e CSS 1
felino Google Maps - Custom Street View panoramas HTML e CSS 1
S google maps Javascript 0
M Script Google Maps per ricavare coordinate di un indirizzo PHP 0
A Google maps API v2 in app Android Sviluppo app per Android 2
M Passare dati a google maps PHP 36
T [Javascript] [RISOLTO] Problema con Google Maps e "Zero_Results" Javascript 11
T Problema con Google Maps e "Zero_Results" Classic ASP 2
R Google maps : marker e cerchio... non funziona Javascript 2
R google maps marker Javascript 7
P Google Maps + Form Javascript 1
G Filtrare risultati Google Maps PHP 1
ivarello Search Box in google maps Javascript 0
I Google Maps HTML e CSS 14
P Mostrare punti interesse du una mappa di google maps Javascript 1
P Google maps... help Javascript 3
M info marker google maps con cicli Javascript 0
borgo italia google maps jQuery 4
Sargon Google maps mysql php PHP 3

Discussioni simili