Et c'est de dire quelque chose. Ceci est basé sur l'exemple de Google Maps pour Directions dans l'API Google Maps v3.Comportement JavaScript le plus fou que j'ai jamais vu
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Google Directions</title>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
var directionDisplay;
var directionsService = new google.maps.DirectionsService();
var map;
function initialize() {
directionsDisplay = new google.maps.DirectionsRenderer();
var myOptions = {
zoom:7,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
directionsDisplay.setMap(map);
directionsDisplay.setPanel(document.getElementById("directionsPanel"));
}
function render() {
var start;
if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
start = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
}, function() {
handleNoGeolocation(browserSupportFlag);
});
} else {
// Browser doesn't support Geolocation
handleNoGeolocation();
}
alert("booga booga");
var end = '<?= $_REQUEST['destination'] ?>';
var request = {
origin:start,
destination:end,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
}
});
}
</script>
</head>
<body style="margin:0px; padding:0px;" onload="initialize()">
<div><div id="map_canvas" style="float:left;width:70%; height:100%"></div>
<div id="directionsPanel" style="float:right;width:30%;height 100%"></div>
<script type="text/javascript">render();</script>
</body>
</html>
Voir cela "alerte ('booga booga')" là dedans?
Avec cela en place, tout cela fonctionne fantastique. Commentez cela, et var start est indéfini lorsque nous tapons la ligne pour définir la requête var.
J'ai découvert quand je l'ai enlevé l'alerte que je mets là-bas pour me montrer la valeur de début var, et cesser de travailler. Si je lui demande de m'avertir de la valeur de var start, il me dit qu'il n'est pas défini, MAIS il a une valeur valide (et précise!) Lorsque nous définissons var request quelques lignes plus tard.
Je doutât est un problème de synchronisation - comme une chose asynchrone est d'avoir le temps de terminer en arrière-plan dans le moment qu'il me faut pour rejeter l'alerte. Des idées sur les solutions de rechange?
+1 cause à booga booga lol – user318747
Heh. Je dois vous dire, quand je l'ai changé de me parler de la variable en question à me dire une chaîne aléatoire et il a échoué encore sans cela ... Ouf. –