Google Map, GClientGeocoder, erreur ...

Nouveau WRInaute
Bonjour,

Pour un site internet, j'ai besoins de lire pour chaques clients, son adresse dans la base donnée, et afficher la map google correspondante.
Je sais faire celà depuis des coordonnées GPS, mais avec le GClientGeocoder de l'API google, ce n'est pas encore ça...

'enfin.. j'y arrive.. qd je met slt mon code dans un fichier html mais pas quand je fais appel à la generation du code depuis une methode de classe...

Donc, dans un fichier seul: affichage sans probleme, sans erreurs.
Et par generation: affichage de la div Google map mais sans carte à l'interieur. Et erreur de script (donnée par Firebug) suivante:

response.Placemark has no properties
(no name)(Object name=caen 14000, France Status=Object)acces.html (line 61)
nk(Object name=caen 14000, France Status=Object)main.js (line 717)
[Break on this error] place = response.Placemark[0];

Placemark a la valeur null ou n'est pas un objet, lorsqu'il est appellé lors d'une generation de code, tandis que sans generation de code, il recupére bien sa valeur.


J'ai passé tout l'apres-midi a chercher et essayer divers solutions, dont l'utilisation d'une classe GoogleMapAPI.class.php provenant d'un projet pour simplifier l'utilisation de google map avec Php, mais sans succés...

La partie de code généré interressante est la suivante:
(Je ne place pas le code Google map dans le head, mais ça fonctionne tres bien comme ça)
(La clé est une localhost, mon site etant pr le moment en localhost..)


Code:
.....
 <div id="content">
40
41 <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAA0S_bsNhEv5lAqj6916FIUBR5dqgHUnBPrq4nWBMjImDIyc7JyRQHjpRrSBH6qwtwn8jsE7-I2XeVfQ" type="text/javascript"></script>
42 <script type="text/javascript">
43 //<![CDATA[
44
45 var geocoder;
46 var map;
47
48 garage = "Garage";
49 address = "caen 14000, France";
50
51 // On page load, call this function
52 function load() {
53 // Create new map object
54 map = new GMap2(document.getElementById("map"));
55 // Create new geocoding object
56 geocoder = new GClientGeocoder();
57 // Retrieve location information, pass it to addToMap()
58 geocoder.getLocations(address, function(response) {
59
60 // Retrieve the object
61 place = response.Placemark[0];
62 // Retrieve the latitude and longitude
63 point = new GLatLng(place.Point.coordinates[1],
64 place.Point.coordinates[0]);
65 // Center the map on this point
66 map.setCenter(point, 13);
67 // Create a marker
68 marker = new GMarker(point);
69 // Add the marker to map
70 map.addOverlay(marker);
71 // Add address information to marker
72 marker.openInfoWindowHtml(garage +'<br>'+ place.address);
73 }
74 );
75 }
76
77 window.onload= load;
78
79 //]]>
80 </script>
81
82 <div id="map" style=" width: 500px; height: 300px"></div>
83 </div>
84 <div id="footer">
.......


J'ai essayer egalement, entre autre, un autre script un peu different, mais, meme chose, fonctionnel slt en page html simple... :

Code:
 <script type="text/javascript">
    //<![CDATA[

      var map = null;
      var geocoder = null;

      function load() {
        if (GBrowserIsCompatible()) {
          map = new GMap2(document.getElementById("map"));
          map.setCenter(new GLatLng(48.9, 2.3), 7);
          map.addControl(new GSmallMapControl());
          map.addControl(new GMapTypeControl());
          geocoder = new GClientGeocoder();
          afficherAdresse('Caen, FRANCE');
        }
      }

      function afficherAdresse(address) {
        if (geocoder) {
          geocoder.getLatLng(address, function(point) {
            if (!point) {
            alert(address + " introuvable");
            } else {
              map.setCenter(point, 13);
              var marker = new GMarker(point);
              map.addOverlay(marker);
              marker.openInfoWindowHtml(address);
            }
          }
          );
        }
      }
      //]]>

    window.onload= load;

    </script>

Quelqu'un serait-il m'eclairer sur l'erreur et sa resolution svp ? :?

Cordialement!
 
Nouveau WRInaute
Re-bonjour,

Vraisemblablement, dans un file_get_content, ça ne fonctionne pas plus... tandis que ça fonctionne tjs en fichier html simple.. arf
Le resultat du code generé, affiche bien les coordonnées par defaut, mais pas l'adresse.
Le fichier simple, affiche bien l'adresse.


<!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>
</head>

<body>
<?php echo $contenu; ?>
</body>

</html>

Il ne met pas d'erreur mais prend la mauvaise direction dans la fonction afficherAdresse, ne pouvant receptionner les données point. Et m'affiche donc que l'adresse est introuvable..

if (!point) {
alert(address + " introuvable");
}
else {
map.setCenter(point, 13);
var marker = new GMarker(point);
map.addOverlay(marker);
marker.openInfoWindowHtml(address);
}

Si y'en a qui on une solution? Merci.
 
Nouveau WRInaute
Bon, apparement, c'est une histoire de clé... c'est quelque peu bizarre, je reverrai ça quand je le mettrai avec sa clé definitive..

Code:
        ... 
        geocoder.getLocations(address, function(response) {
        alert (response.Status.code);
        ...

G_GEO_BAD_KEY (610) The given key is either invalid or does not match the domain for which it was given. (Since 2.55)
 
Discussions similaires
Haut