Utilisation de données php dans un script javascript

RonanLvk -  
Gigatrappeur Messages postés 230 Statut Membre -
Bonjour à tous,

Je suis entrain d'essayer de développer un service de géolocalisation utilisant l'API Google Map. Jusque là, pas de problèmes. Je récupère mon adresse dans la base de données et la convertit en longitude/latitude grâce à la fonction php. Mais j'aimerais utiliser cette longitude et cette latitude dans mon javascript pour placer un pointeur sur ma carte... Là, problème! j'ai essayé de manipuler des echo, de mettre mes variables entre <? ... ?>, rien n'y fait...
Voici le code source, merci!




<div id="map_canvas">
<?php
function getXmlCoordsFromAdress($address)
{
$coords=array();
$base_url="http://maps.googleapis.com/maps/api/geocode/xml?";
// ajouter ®ion=FR si ambiguité (lieu de la requete pris par défaut)
$request_url = $base_url . "address=" . urlencode($address).'&sensor=false';
$xml = simplexml_load_file($request_url) or die("url not loading");
//print_r($xml);
$coords['lat']=$coords['lon']='';
$coords['status'] = $xml->status ;
if($coords['status']=='OK')
{
$coords['lat'] = $xml->result->geometry->location->lat ;
$coords['lon'] = $xml->result->geometry->location->lng ;
}
return $coords;
}

$coords=getXmlCoordsFromAdress("22 rue rambuteau, 75003 PARIS, france");
echo $coords['status']." ".$coords['lat']." ".$coords['lon'];
?>

<script type="text/javascript">
function initialize() {
map = new google.maps.Map(document.getElementById("map_canvas"), {
zoom: 13,
center: new google.maps.LatLng(48.858565, 2.347198),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
}

if (navigator.geolocation)
var watchId = navigator.geolocation.watchPosition(successCallback, null, {enableHighAccuracy:true});
else
alert("Votre navigateur ne prend pas en compte la géolocalisation HTML5");

function successCallback(position){
map.panTo(new google.maps.LatLng(position.coords.latitude, position.coords.longitude));
var marker = new google.maps.Marker({
position: new google.maps.LatLng(position.coords.latitude, position.coords.longitude),
// 43.2476341 5.3917355
map: map
});
var marker2 = new google.maps.Marker({
position: new google.maps.LatLng(46.80634, 1.63546),
map: map
});
var marker3 = new google.maps.Marker({
position: new google.maps.LatLng(43.1527198, 5.9151612),
map: map
});
var iw = new google.maps.InfoWindow({
content: "Vous êtes ici"
});
var iw2 = new google.maps.InfoWindow({
content: "Le produit A"
});

google.maps.event.addListener(marker, "click", function (e) { iw.open(map, marker); });
google.maps.event.addListener(marker2, "click", function (e) { iw2.open(map, marker2); });
};
// Distance en marker et marker 3 : 43.72 kms
// Distance entre marker et marker 2 : 493.563 kms
//http://www.lexilogos.com/calcul_distances.htm
// http://stevemorse.org/jcal/latlon.php
</script>
</div>
A voir également:

7 réponses

Gigatrappeur Messages postés 230 Statut Membre 25
 
Bonjour,

normalement, un truc du genre devrait fonctionner :
<script type="text/javascript">
var maVar1 = '<?php echo $maVar1; ?>';
var maVar2 = '<?php echo $maVar2; ?>';
</script>

Cordialement,
Gigatrappeur
0
RonanLvk
 
En effet, ça fonctionne merci!

Dernière petite chose pour finir, du coup je dois calculer la distance entre 2 points donc j'utilise la fonction qui suit mais mes echo n'affiche pas les résultats... Conflit avec php? Je ne sais pas trop comment faire!
De plus, est ce que je peux faire ça :
$lat = $coords['lat'];
$lon = $coords['lon'];
echo (round(get_distance_m($lat, $lon, 45.767299, 4.834329) / 1000, 3)). ' km';
?

<?php
function getXmlCoordsFromAdress($address)
{
$coords=array();
$base_url="http://maps.googleapis.com/maps/api/geocode/xml?";
// ajouter ®ion=FR si ambiguité (lieu de la requete pris par défaut)
$request_url = $base_url . "address=" . urlencode($address).'&sensor=false';
$xml = simplexml_load_file($request_url) or die("url not loading");
//print_r($xml);
$coords['lat']=$coords['lon']='';
$coords['status'] = $xml->status ;
if($coords['status']=='OK')
{
$coords['lat'] = $xml->result->geometry->location->lat ;
$coords['lon'] = $xml->result->geometry->location->lng ;
}
return $coords;
}

$coords=getXmlCoordsFromAdress("22 rue rambuteau, 75003 PARIS, france");
echo $coords['status']." ".$coords['lat']." ".$coords['lon'];

function get_distance_m($lat1, $lng1, $lat2, $lng2) {
$earth_radius = 6378137; // Terre = sphère de 6378km de rayon
$rlo1 = deg2rad($lng1);
$rla1 = deg2rad($lat1);
$rlo2 = deg2rad($lng2);
$rla2 = deg2rad($lat2);
$dlo = ($rlo2 - $rlo1) / 2;
$dla = ($rla2 - $rla1) / 2;
$a = (sin($dla) * sin($dla)) + cos($rla1) * cos($rla2) * (sin($dlo) * sin($dlo
));
$d = 2 * atan2(sqrt($a), sqrt(1 - $a));
return ($earth_radius * $d);
}

echo (round(get_distance_m(48.856667, 2.350987, 45.767299, 4.834329) / 1000, 3)). ' km';
// affiche 391.613 km
?>
0
Gigatrappeur Messages postés 230 Statut Membre 25
 
A tout hasard, l'XML renvoyer par maps, il ne serai pas namespacé ?
0
RonanLvk
 
Je ne sais pas ce que veut dire namespacé :/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gigatrappeur Messages postés 230 Statut Membre 25
 
Quand tu as un XML de la forme :
<xs:element ...>
</xs:element>
xs est un namespace.

Aller un petit lien pour la forme : https://www.w3schools.com/xml/xml_namespaces.asp
0
RonanLvk
 
D'accord :) Mais je ne vois pas où tu veux me faire aller..
0
Gigatrappeur Messages postés 230 Statut Membre 25
 
Quand tu parcours un arbre XML, si il est namespacé, il y a une syntaxe particulière :
$xml->{'xs:element'}
au lieu de
$xml->element
Peut-être que ton problème est là ou pas...
0