ilos3
07-12-2009, 19:54
Salve a tutti.
Ho integrato una google map in un sito x visualizzare tutte le filiali di un'azienda sul territorio italiano. Ho usato 2 marker diversi, uno individua le filiali principali, il secondo tutte le filiali secondarie. Gli indirizzi da visualizzare sono recuperati da db mediante php. In particolare ho creato in php una stinga contenente gli indirizzi e una stringa contenente le info da visualizzare x ogni filiale. Queste stinghe php sono state convertite in 2 array mediante js.
Il problema che ho riscontrato è il seguente: il numero di filiali visualizzate varia
- in base al browser utilizzato (firefox è quello che ne visualizza di meno)
- ogni volta che ricarico la pagina contenente la mappa
Qual è il problema?
Potrebbe anche riguardare la forma degli indirizzi?
Il codice che ho usato è il seguente:
<script src="xxxx://maps.google.com/maps?file=api&dev=2&hl=it&key=codice" type="text/javascript"></script>
<script type="text/javascript">
var map = null;
var geocoder = null;
icona = new GIcon();
icona.image = "img/marker.png";
icona.iconSize = new GSize(12, 20);
icona.iconAnchor = new GPoint(6, 20);
icona.infoWindowAnchor = new GPoint(6, 20);
icona.shadowSize = new GSize(24, 20);
function load() {
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById("map"));
map.addControl(new GSmallMapControl());
map.setCenter(new GLatLng(37.4419, -122.1419), 13);
geocoder = new GClientGeocoder();
}
}
function createMaker(address, infos, contatore){
if (geocoder) {
geocoder.getLatLng(address, function(point){
if (!point){
//alert(address + " not found");
}
else{
map.setCenter(point, 5);
/*condizione: se è filiale principale visualizzo marker altrimenti marker2. Lo stabilisco verificando l'indirizzo mail*/
var condizione=true;
if (infos.indexOf("xxx@xxx.it")>0 || infos.indexOf("yyy@xxx.it")>0){
condizione=false;
}
if (condizione){
icona.image="img/marker2.png";
}
else{
icona.image="img/marker.png";
}
var marker = new GMarker(point, icona);
GEvent.addListener(marker, "click", function() {
marker.openInfoWindowHtml(infos+"<br />");
});
map.addOverlay(marker);
}
}
);//geocoder
}//if
}//createMaker
function showAll(){
var indirizzi=Array(<?=$vettore?>); /* indirizzo filiale */
var infos=Array(<?=$franchisor?>); /* info da visualizzare sulla filiale */
for(i=0; i<indirizzi.length; i++){
createMaker(indirizzi[i], infos[i], i);
}
}//showAll
</script>
</head>
<body onLoad="load(); showAll();" onUnload="GUnload()">
<div id="map" style="width: 380px; height: 420px"></div>
</body>
Grazie
Ho integrato una google map in un sito x visualizzare tutte le filiali di un'azienda sul territorio italiano. Ho usato 2 marker diversi, uno individua le filiali principali, il secondo tutte le filiali secondarie. Gli indirizzi da visualizzare sono recuperati da db mediante php. In particolare ho creato in php una stinga contenente gli indirizzi e una stringa contenente le info da visualizzare x ogni filiale. Queste stinghe php sono state convertite in 2 array mediante js.
Il problema che ho riscontrato è il seguente: il numero di filiali visualizzate varia
- in base al browser utilizzato (firefox è quello che ne visualizza di meno)
- ogni volta che ricarico la pagina contenente la mappa
Qual è il problema?
Potrebbe anche riguardare la forma degli indirizzi?
Il codice che ho usato è il seguente:
<script src="xxxx://maps.google.com/maps?file=api&dev=2&hl=it&key=codice" type="text/javascript"></script>
<script type="text/javascript">
var map = null;
var geocoder = null;
icona = new GIcon();
icona.image = "img/marker.png";
icona.iconSize = new GSize(12, 20);
icona.iconAnchor = new GPoint(6, 20);
icona.infoWindowAnchor = new GPoint(6, 20);
icona.shadowSize = new GSize(24, 20);
function load() {
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById("map"));
map.addControl(new GSmallMapControl());
map.setCenter(new GLatLng(37.4419, -122.1419), 13);
geocoder = new GClientGeocoder();
}
}
function createMaker(address, infos, contatore){
if (geocoder) {
geocoder.getLatLng(address, function(point){
if (!point){
//alert(address + " not found");
}
else{
map.setCenter(point, 5);
/*condizione: se è filiale principale visualizzo marker altrimenti marker2. Lo stabilisco verificando l'indirizzo mail*/
var condizione=true;
if (infos.indexOf("xxx@xxx.it")>0 || infos.indexOf("yyy@xxx.it")>0){
condizione=false;
}
if (condizione){
icona.image="img/marker2.png";
}
else{
icona.image="img/marker.png";
}
var marker = new GMarker(point, icona);
GEvent.addListener(marker, "click", function() {
marker.openInfoWindowHtml(infos+"<br />");
});
map.addOverlay(marker);
}
}
);//geocoder
}//if
}//createMaker
function showAll(){
var indirizzi=Array(<?=$vettore?>); /* indirizzo filiale */
var infos=Array(<?=$franchisor?>); /* info da visualizzare sulla filiale */
for(i=0; i<indirizzi.length; i++){
createMaker(indirizzi[i], infos[i], i);
}
}//showAll
</script>
</head>
<body onLoad="load(); showAll();" onUnload="GUnload()">
<div id="map" style="width: 380px; height: 420px"></div>
</body>
Grazie