Manipulation du javascript pour api google maps

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Manipulation du javascript pour api google maps

par Ryle » 17 avr. 2009, 17:06

Pour avoir eu le même problème, je peux confirmer qu'il ne s'agit pas d'une erreur au niveau de l'adresse (les points qui s'affichaient n'étaient pas les mêmes d'une fois sur l'autre). Il semble avoir du mal devant un grand nombre de requête de géocoding, à toutes les gérer...

Du coup, pour ma part, la solution pour laquelle j'ai opté, consiste à récupérer les coordonnées retournées lors du géocodage de l'adresse et stocker ces valeurs en base. L'affichage d'un point généré à partir d'un new GLatLng() ne pose en effet aucun problème.

Ainsi, mes points se sont enregistrés au fur et à mesure (enfin quand google voulait bien mes les localiser) et l'affichage par latitude/longitude s'est fait ensuite sans aucun problème...

par Pakito » 17 avr. 2009, 15:05

Apres une bonne heure de galere sur ce probleme, voici la réponse :

L'erreur vient de l'adresse, google doit surrement avoir un peu de mal a localiser certaines adresses, rajoutez juste un ptit ", FR" à la fin de votre adresse et la geolocalisation ce fera sans soucis, et vos marker seront bien ajouter. Voila

google map et base de donnees

par joyeuse » 12 mars 2008, 17:58

Bonsoir,
j'ai exactement le meme probleme environ 30 marqueurs sur 120 ne s 'affichent pas et ce sont toujours les memes a chaque fois que l 'on affiche la page.

Rien de mis en evidence pour les 30 qui ne s 'affichent pas
j 'utilise comme toi les memes fonctions .

La requete renvoie bien toutes les lignes.
As tu une piste maintenant ?
Merci pour ta reponse

par jay64 » 20 févr. 2008, 15:24

En fait, ma page comporte le code ci-dessous mais ça fonctionne qu'à moitié. En effet, aléatoirement, certains marqueurs ne s'affichent pas sur la carte, et quand j'actualise, certains apparaissent, et d'autres disparaissent. Comme si la boucle tournait trop vite pour faire la géolocation auprès de google ( :roll: ce qui m'étonnerait ...)

Une idée de ce qui cloche ?

Merci !
<?
require('GoogleMapAPI.class.php'); 

require_once('../Connections/connection_jesuisne.php');

mysql_select_db($database_connection_jesuisne, $connection_jesuisne);

// on récupère tous les clients encours avec forfait payant
$query_ListeClients = "SELECT * FROM Clients WHERE TypeInscriptionClient <> 'Gratuit' AND CPClient <> '' AND CPClient <> 'Kdo'";
$ListeClients = mysql_query($query_ListeClients, $connection_jesuisne) or die(mysql_error());


//on crée notre carte
$map = new GoogleMapAPI('map','tutoriel_map');

// METTEZ ICI VOTRE CLE GOOGLE
//local
$map->setAPIKey('aaaaaaaaaaaaaaaaaaaaaa');
//taille de la map
$map->setHeight("650");
$map->setWidth("1200");
//on desactive la barre de coté?
$map->disableSidebar();
//DesActive les boutons(map/satellite/hybrid).
$map->disableTypeControls();
//Quel est le type de carte par defaut ? (map/satellite/hybrid)
$map->setMapType('map'); // default
//On déssactive les boutons pour afficher la direction d’un point a l’autre
$map->disableDirections();
// Permet de definir le zoom automatiquement afin de voir tous les marqueurs d’un coup.
$map->enableZoomEncompass();
//Active la mini map en bas a droite
$map->enableOverviewControl();

do { 

	$Adresse = $row_ListeClients['VilleClient'].", France";
	$Nom_Marqueur = "Marqueur de test";
	$Infobulle = $row_ListeClients['CPClient']." ".$row_ListeClients['VilleClient'];

	$map->addMarkerByAddress($Adresse, $Nom_Marqueur, $Infobulle);
	
	} while ($row_ListeClients = mysql_fetch_assoc($ListeClients));



?>
<!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" xmlns:v="urn:schemas-microsoft-com:vml">
<script type="text/javascript" src="mootools.release.83.js"></script>
<html>       
<head>
<title>Tutoriel Google Map API avec PHP</title>
<?php $map->printHeaderJS(); ?>
<?php $map->printMapJS(); ?>
<script type="text/javascript" src="../js/slimbox.js"></script>
<link rel="stylesheet" href="../css/slimbox.css" type="text/css" media="screen" />
<!-- necessaire pour google pour tracer les polylines -->
<style type="text/css">
v\:* {  behavior:url(#default#VML);}
/*pour les infobulles de la carte*/
#gmapmarker {  font: normal small verdana, arial, helvetica, sans-serif;  font-size: 10pt;  margin: 0px;  width: 350px;  height: 150px;  overflow:auto;}
#gmapmarker p{  margin : 0;  padding : 2px 0 2px 0;}
#gmapmarker a {text-decoration: none; color: #0066CC; background-color: transparent;}
#gmapmarker a:hover {color: #F60; background-color: transparent;}
#gmapmarker h1 {  font-weight: bold;  font-size: 13px;  color: #369;  border-bottom: 2px solid #369;  padding : 2px;  margin : 0;}

/*div qui contient la carte*/
#map {  float : left;}
</style>

</head>
<body onload="onLoad()">
<table border=1>
<tr><td>
<?php $map->printMap(); //on affiche la map ?>
</td><td>
<?php $map->printSidebar(); //on affiche la barre de navigation ?>
</td></tr>
</table>
</body>
</html>

par agité » 20 févr. 2008, 10:56

La classe utilise la fonction $map->AddMarkerByAddress

Un exemple sur mon code :
      //CREATION DES MARQUEURS
      //on peut egalement utiliser addMarkerByCoords() si on a déj�  la latitude et longitude des points
      //Exemple basique
      $map->addMarkerByAddress("'".$ArrayProg['Adresse']." ".$ArrayProg['Ville'].",".$ArrayProg['Cp']."'","'".$ArrayProg['Nom']."'",'<b>'.$ArrayProg['Nom'].'.</b><br />'.$ArrayProg['Adresse'].'<br />('.$ArrayProg['Cp'].') - '.$ArrayProg['Ville'].'<br /><br /><img src=\'../_medias/img/_upload/programme/miniature/m_'.$ArrayProg['Photo_0'].'\' alt=\'&nbsp;\'>&nbsp<img src=\'../_medias/img/_upload/programme/miniature/m_'.$ArrayProg['Photo_1'].'\' alt=\'&nbsp;\'>&nbsp;<img src=\'../_medias/img/_upload/programme/miniature/m_'.$ArrayProg['Photo_2'].'\' alt=\'&nbsp;\'><br /><br />'.$ArrayProg['Presentation'].'<br />');
Ensuite il te suffit de faire une boucle while retournant tout les elements que tu veux.

Dans mon exemple je rajoute aussi des photos, du texte et un titre sur les marqueurs, d'ou les Photo_1 2 et 3.

Je passe par des données entrée en brut style : adresse, ville et ca marche correctement google fait la translation entre les coordonnées rentrées et ces points.

Les 2 méthodes sont possibles.

De plus je te conseille l'affichage en hybrid de la carte, c'est quand même beaucoup plus sympa :p

      //Quel est le type de carte par defaut ? (map/satellite/hybrid)
      $map->setMapType('hybrid'); // default

Manipulation du javascript pour api google maps

par jay64 » 20 févr. 2008, 10:26

Bonjour,

Alors tout d'abord je précise, je n'y connais vraiment pas grand chose en javascript, étant beaucoup plus à l'aise en php.

Mais pour satisfaire à mon besoin d'utiliser l'api de google maps, me voilà obligé de mettre la main à ce nouveau language.

Je vous explique :

Sur une carte google map, je souhaite ajouter des marqueurs dont je connais à la base le CodePostal de la commune ratachée.

Pour cela google met à disposition cette fonction, qui permet de géolocaliser le point, c'est à dire retourner des coordonées latitude/longitude depuis une adresse :

Code : Tout sélectionner

function showAddress(address) { geocoder.getLatLng( address, function(point) { if (!point) { alert(address + " non trouvé"); } else { //map.setCenter(point, 13); var marker = new GMarker(point); map.addOverlay(marker); //marker.openInfoWindowHtml(address); } } ); }
Ensuite, pour ajouter des marqueurs sur une carte, nous avons ceci (toujours tiré d'un exemple):

Code : Tout sélectionner

var point = new GPoint(-83.014734, 40.005403); var marker = new GMarker(point); map.addOverlay(marker);
Mon souci est donc dans un premier temps de récupérer les coordonées du point (via le géocodage), et d'ensuite placer le marqueur à partir de ces coordonées.
Difficulté suuplémentaire, je dois rajouter autant de marqueur que j'ai d'enregistrements retournés par ma requete suivante :

Code : Tout sélectionner

SELECT CodePostalClient FROM Clients
Merci d'avance pour votre aide !

Jérôme