Utilisation de données php dans un script javascript
RonanLvk
-
Gigatrappeur Messages postés 230 Statut Membre -
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>
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:
- Utilisation de données php dans un script javascript
- Fuite données maif - Guide
- Utilisation chromecast - Guide
- Télécharger gratuitement notice d'utilisation - Guide
- Script vidéo youtube - Guide
- Supprimer les données de navigation - Guide
7 réponses
Bonjour,
normalement, un truc du genre devrait fonctionner :
Cordialement,
Gigatrappeur
normalement, un truc du genre devrait fonctionner :
<script type="text/javascript"> var maVar1 = '<?php echo $maVar1; ?>'; var maVar2 = '<?php echo $maVar2; ?>'; </script>
Cordialement,
Gigatrappeur
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
?>
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
?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Quand tu as un XML de la forme :
Aller un petit lien pour la forme : https://www.w3schools.com/xml/xml_namespaces.asp
<xs:element ...> </xs:element>xs est un namespace.
Aller un petit lien pour la forme : https://www.w3schools.com/xml/xml_namespaces.asp