IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Tableau JS multidimensionnel


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 70
    Points : 40
    Points
    40
    Par défaut Tableau JS multidimensionnel
    Bonsoir,

    Je sèche sur un programme JS (Google Maps) qui globalement fonctionnait bien au fil de mes étapes, jusqu'à ce que j'obtienne un "missing ; before statement" pour la ligne var beaches[] = new Array(address,latitude,longitude,5); de mon script ci-dessous et évidemment, je ne vois pas ce qui cloche. Ca semble être lié à la manière de construire mon tableau multidimensionnel, mais je ne vois pas pourquoi... Une idée ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
        <script type="text/javascript">
     
    var directionDisplay;
      var directionsService = new google.maps.DirectionsService();
      var map;
     
    var listbeaches = ['Bondi Beach', 'Coogee Beach', 'Cronulla Beach', 'Manly Beach', 'Maroubra Beach'];
     
    function geocord(address) {
    geocoderq = new google.maps.Geocoder();
    geocoderq.geocode({ 'address': address }, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
    var latitude = results[0].geometry.location.lat();
    var longitude = results[0].geometry.location.lng();
    // erreur pour ligne ci-dessous : missing ; before statement
    var beaches[] = new Array(address,latitude,longitude,5);
    //var beaches[] = ['Bondi Beach',-33.890542,151.274856,5];
    }
    });  
    }
     
      function initialize() {
          geocoder = new google.maps.Geocoder();
        directionsDisplay = new google.maps.DirectionsRenderer();
        var europe = new google.maps.LatLng(-33.890542,151.274856);
        var myOptions = {
          zoom:5,
          mapTypeId: google.maps.MapTypeId.ROADMAP,
          center: europe
        }
        map = new google.maps.Map(document.getElementById("map-canvas"), myOptions);
     
    for (i = 0; i < listbeaches.length; i++)
    {
    var address = listbeaches[i];
    geocord(address,i);	
    }
     
    setMarkers(map, beaches);
     
        directionsDisplay.setMap(map);
      }
     
     
    function setMarkers(map, locations) {
      // Add markers to the map
     
      // Marker sizes are expressed as a Size of X,Y
      // where the origin of the image (0,0) is located
      // in the top left of the image.
     
      // Origins, anchor positions and coordinates of the marker
      // increase in the X direction to the right and in
      // the Y direction down.
      var image = {
        url: 'http://www.aim-awards.co.uk/media/png/beachflag.png',
        // This marker is 20 pixels wide by 32 pixels tall.
        size: new google.maps.Size(20, 32),
        // The origin for this image is 0,0.
        origin: new google.maps.Point(0,0),
        // The anchor for this image is the base of the flagpole at 0,32.
        anchor: new google.maps.Point(0, 32)
      };
      // Shapes define the clickable region of the icon.
      // The type defines an HTML &lt;area&gt; element 'poly' which
      // traces out a polygon as a series of X,Y points. The final
      // coordinate closes the poly by connecting to the first
      // coordinate.
      var shape = {
          coord: [1, 1, 1, 20, 18, 20, 18 , 1],
          type: 'poly'
      };
      for (var i = 0; i < locations.length; i++) {
        var beach = locations[i];
        var myLatLng = new google.maps.LatLng(beach[1], beach[2]);
        var marker = new google.maps.Marker({
            position: myLatLng,
            map: map,
            icon: image,
            shape: shape,
            title: beach[0],
            zIndex: beach[3]
        });
      }
    }
     
     
    function clickroute(address,zoom) {
    //	map.panTo(new google.maps.LatLng(lati, long));
    //	map.setZoom(zoom);lati,long,zoom
    //return false; //this will cancel your navigation
     
    geocoder = new google.maps.Geocoder();
    geocoder.geocode({ 'address': address }, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        map.setCenter(results[0].geometry.location);
    	map.setZoom(zoom);
    }
    });
     
    }
     
    google.maps.event.addDomListener(window, 'load', initialize);
     
     
     </script>

  2. #2
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    Attention à la syntaxe d'Array
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    var beaches = new Array(address,latitude,longitude,5);
    OU l'équivalent dans sa forme littérale :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    var beaches = [address,latitude,longitude,5];

    Pour en savoir plus

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 70
    Points : 40
    Points
    40
    Par défaut
    En fait, j'ai déjà testé plein de choses avant de poster et au final, on s'embrouille vite l'esprit et avec var beaches = new Array(address,latitude,longitude,5); on me dit que : beaches is not defined
    Néanmoins, j'ai ajouté var beaches = new Array(); en en-tête du script et ça ne me met plus le message d'erreur...

    Par contre, c'était censé me rajouter les pointeurs (du tableau) sur ma carte et là, je ne vois rien s'afficher.
    Le but étant que les coordonnées soient automatiquement trouvées, mon tableau multidimensionnel n'a pas l'air d'avoir correctement créé l'équivalent du tableau existant initialement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var beaches = [
      ['Bondi Beach', -33.890542, 151.274856, 5],
      ['Coogee Beach', -33.923036, 151.259052, 5],
      ['Cronulla Beach', -34.028249, 151.157507, 5],
      ['Manly Beach', -33.80010128657071, 151.28747820854187, 5],
      ['Maroubra Beach', -33.950198, 151.259302, 5]]
    Pourtant, les données sont bien reprises, j'ai testé avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(i+": "+address+", "+latitude+", "+longitude);

  4. #4
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    var beaches = new Array(address,latitude,longitude,5); on me dit que : beaches is not defined
    Je ne vois pas comment cela peut être undefined étant donné que tu es entrain de le définir

    Si tu veux ajouter une plage au tableau beaches, voici la syntaxe :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var beaches = []; // équivaut à var beaches = new Array();
    beaches.push([address, latitude, longitude, 5]);

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 70
    Points : 40
    Points
    40
    Par défaut
    On est bien d'accord que ça n'avait apparemment pas de sens (en tout cas, rien d'évident). Toujours est-il que... merci et bravo, car c'était précisément la solution (push) au problème rencontré !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. vider un tableau (array) multidimensionnel
    Par Edgar dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 08/03/2011, 09h42
  2. un tableau dynamique multidimensionnel en c++
    Par sonyabm dans le forum Débuter
    Réponses: 1
    Dernier message: 22/11/2009, 19h31
  3. tableau dynamique multidimensionnel en parametre
    Par gotcha42 dans le forum Débuter
    Réponses: 1
    Dernier message: 09/10/2007, 17h40
  4. Récupérer un tableau html multidimensionnel associatif sous javascript
    Par Mormegil dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/04/2007, 17h47
  5. Réponses: 9
    Dernier message: 11/08/2006, 21h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo