Newsgroup: it.comp.lang.javascript
Titolo: Sintassi per array in google maps

Dovendo inserire degli overlayer su du una mappa di google maps ho 
utilizzato questo sistema.
................
................
var ViaGiordanoBruno = new google.maps.LatLngBounds(
new google.maps.LatLng(43.767836,11.112595), // punto sud/ovest per 
overlayer
new google.maps.LatLng(43.767919,11.113041) // punto nord/est per overlayer
);
 
var PiazzaCarloButi = new google.maps.LatLngBounds(
new google.maps.LatLng(43.709843,11.07387), // punto sud/ovest per overlayer
new google.maps.LatLng(43.709972,11.074454) // punto nord/est per overlayer
);	
.................
................
var ViaGiordanoBrunoOverlayer = new google.maps.GroundOverlay(
'ViaGiordanoBruno.png', ViaGiordanoBruno);
ViaGiordanoBrunoOverlayer.setMap(map);
 
var PiazzaCarloButi = new google.maps.GroundOverlay(
'PiazzaCarloButi.png', PiazzaCarloButi);
PiazzaCarloButi.setMap(map);
.................
.................
 
Poiché adesso dovrebbero aumentare avrei intenzione di fare un array per 
inserirne una quantità a maggiore (eventualmente leggendo i dati da un db)
 
Purtroppo non riesco a far funzionare questi array per un problema 
sintattico.
Ho provato in molti modi, uno dei quali è questo
var nomi1 = new Array()
var nomi2 = new Array()
var nomi3 = new Array()
nomi1[0] = "ViaGiordanoBruno"
nomi2[0] = "43.767836,11.112595"
nomi3[0] = "43.767919,11.113041"
nomi1[1] = "PiazzaCarloButi"
nomi2[2] = "43.709843,11.07387"
nomi3[3] = "43.709843,11.07387"
for(x=0;x<2;x++)
{
var nomi1[x] = new google.maps.LatLngBounds(
new google.maps.LatLng(nomi2[x]), // punto sud/ovest per overlayer
new google.maps.LatLng(nomi3[x]) // punto nord/est per overlayer
);}
..............
..............
for(x=0;x<2;x++)
{
var nomi1[x] = new google.maps.GroundOverlay(
nomi1[x]+'.png', ViaDelPoggioAllaMalva);
nomi1[x].setMap(map);
}
Naturalamente non funziona e per questo mi rivolgo qui in cerca di aiuto.
In altre parole come si inseriscono, sintatticamente, questi oggetti 
negli array?
Grazie a chi mi vorrà dare una mano.
Leonardo
 
-- 
Non sono su facebook
Se anche tu vuoi cancellarti
http://www.giardiniblog.com/come-cancellarsi-da-facebook-eliminare-account/
 

 nomi3[3] = "43.709972,11.074454"   // punto nord/est per overlayer
 
non mi è chiaro come usi gli array che hai creato.
Io creerei gli array per contenere entrambe le locazioni, in questo modo:
 
var mio_array = new Array();
 
mio_array[0] = new Array();
mio_array[1] = new Array();
 
mio_array[0][0] = "ViaGiordanoBruno";
mio_array[0][1] = "43.767836,11.112595";
mio_array[0][2] = "43.767919,11.113041";
mio_array[1][0] = "PiazzaCarloButi";
mio_array[1][1] = "43.709843,11.07387";
mio_array[1][2] = "43.709972,11.074454";
 
 
E poi, per scorrere gli elementi:
 
var overlays = new Array();
 
var x = 0;
var y = 0;
 
for (x=0; x<mio_array[0].length; x++)
{
    for (y=0; y<mio_array[1].length; y++)
    {
        overlays.push(new google.maps.LatLngBounds(
           new google.maps.LatLng(mio_array[x][y]),  // punto sud/ovest
per overlayer
           new google.maps.LatLng(mio_array[x][y])   // punto nord/est per
overlayer
        ));
    }
}
 
var oldmap;
 
for (x=0; x<overlays.length; x++)
{
   oldmap = new google.maps.GroundOverlay(overlays[x]+'.png', overlays[x]);
 
   oldmap.setMap(map); 
}
 
(quest'ultima parte è da rivedere meglio).
 
 
 
 
 

 cut
 
Forse dico una castroneria, ma in javascript non esistono gli array
multidimensionali, o no?
 
Max

 multidimensionali, o no?
 
ho preso spunto da qui:
 
Array multidimensionali in Javascript
 
http://www.mrwebmaster.it/javascript/array-multidimensionali-javascript_7028.html
 
 
 

 multidimensionali, o no?
 
No, infatti. Ma puoi creare Array di Array, come nel codice sopra
riportato. Per intenderci, se vuoi far una matrice di 3x2, puoi fare:
 
    var matrix = [
        [1, 1],
        [1, 0],
        [0, 0]
    ];
 
In questo modo hai un array (`matrix`) di tre elementi, che a loro volta
sono ognuno un array di due elementi.
 
Nota che, a differenza di linguaggi dove esistono array
multidimensionali, la lunghezza di ogni array di array è indipendente, e
anche il contenuto di ogni singolo elemento.
Quindi potresti avere anche:
 
     var stuff = [
        [1, 1],
        [1, 0, 190],
        [0, 0]
    ];
 
E anche, ovviamente:
 
    var stuff = [
        1,
        [3, 10],
        "foo",
        {foo: [1, 4]},
        null
    ];
 
etc.
 
Ma questo tipo di array è piú difficile da scambiare per un array
"multidimensionale", mentre invece il primo tipo può essere benissimo un
errore.
 


 
Salve, sono io che non mi sono spiegato bene, il problema non è 
dell'array come tale, ma sulla possibilità ed eventuale sintassi per 
inserire degli overlay su dui una mappa google usando degli array.
 
Questo è uno spezzone del codice che inizializza una mappa di google 
maps V3 con 2 overlayer () (ViaGiordanoBruno e PiazzaCarloButi)
 
function initialize() {
geocoder = new google.maps.Geocoder();
 
	var ViaGiordanoBruno = new google.maps.LatLngBounds(
     	new google.maps.LatLng(43.767836,11.112595), // sud/ovest
     	new google.maps.LatLng(43.767919,11.113041) // nord/est
	  );	
 
	var PiazzaCarloButi = new google.maps.LatLngBounds(
     	new google.maps.LatLng(43.709843,11.07387), // sud/ovest
     	new google.maps.LatLng(43.709972,11.074454) // nord/est per
	  );	
 
 
directionsDisplay = new google.maps.DirectionsRenderer();
var CentroMappa = new google.maps.LatLng(<?php echo $llinitialize; ?>); 
// firenze
var mapOptions = {
zoom: <?php echo $zoominiziale ?>,
mapTypeId: google.maps.MapTypeId.HYBRID,
 
center: CentroMappa,
 
mapTypeControl: true,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.TOP_RIGHT},
 
scaleControl: true,
scaleControlOptions: {
position: google.maps.ControlPosition.TOP_LEFT},
 
overviewMapControl: true,
overviewMapControlOptions: {opened: true}
   }
map = new google.maps.Map(document.getElementById('Map_Canvas'), 
mapOptions);
 
 
	var ViaGiordanoBrunoOverlayer = new google.maps.GroundOverlay(
   	'ViaGiordanoBruno.png', ViaGiordanoBruno);
	ViaGiordanoBrunoOverlayer.setMap(map);
 
	var PiazzaCarloButi = new google.maps.GroundOverlay(
   	'PiazzaCarloButi.png', PiazzaCarloButi);
	PiazzaCarloButi.setMap(map);
 
directionsDisplay.setMap(map);
 
}
 
 
Dovendo utilizzare molti overlayer, avrei intenzione di utilizzare degli 
array.
Dopo molti tentativi non sono riuscito a far funzionare il codice.
è fattibile l'uso di array a questo scopo? e se si, qual'è la sintassi?
Grazie.


 è fattibile l'uso di array a questo scopo? e se si, qual'è la sintassi?
 
Non ho mai usato Google Maps, quindi non so dirti come mai incontri
delle difficoltà. A occhio comunque, io userei una struttura simile:
 
    var data = [
        {
            name: 'ViaGiordanoBurno',
            coords: [
                43.767836, 11.112595, // sud-ovest
                43.767919, 11.11304 // nord-est
            ]
        },
        {
            name: 'PiazzaCarloButi',
            coords: [
                43.709843, 11.07387,
                43.709972, 11.074454
            ]
        }
    ];
 
E poi per convertire il tutto in oggetti Google Maps:
 
    function toGroundOverlay(item) {
        var coords = item.coords;
        var name = 
item.name
;
 
        var bounds = new google.maps.LatLngBounds(
            new google.maps.LatLng(coords[0], coords[1]),
            new google.maps.LatLng(coords[2], coords[3])
        );
 
        return new google.maps.GroundOverlay(
            name + '.png', bounds
        );
    };
 
    function setMap(map) {
        return function (overlayer) { overlayer.setMap(map) }
    };
 
    data
        .map(toGroundOverlay)
        .forEach(setMap(map));
 
 
Ovviamente potresti impostare la mappa già nella funzione precedente, ma
per una buona separazione eviterei; a meno che non ci sia un discorso di
performance.
 
Premesso che non ho idea se funzioni o meno, non l'ho testato, ma la
logica dovrebbe essere questa. Come ho detto non ho mai usato Google Maps.
 
Nota a margine: in Firefox l'ultima riga sarebbe potuta essere:
 
    data
        .map(toGroundOverlay)
        .forEach(overlayer => overlayer.setMap(map));