2016-05-28 14 views
-1

Ich entschuldige mich, aber ich bin kein Experte in JavaScript, muss ich Breite und Länge in einer Variablen, um eine Route mit Google Maps zu verfolgen.Javascript: Setzen GPS-Koordinaten in var

function calcRoute() { 
    var start = "position.coords.latitude,position.coords.longitude"; 
    var end = "<?php echo $la; ?>,<?php echo $lo; ?>"; 
    var request = { 
     origin:start, 
     destination:end, 
     travelMode: google.maps.DirectionsTravelMode.DRIVING 
    }; 

Dieser Code funktioniert, wenn ich

 var start = "12.3456789,12.3456789"; 

schreiben Wie Sie sehen können, PHP Ende des coords gut funktioniert zu setzen. Ich habe verschiedene Möglichkeiten ausprobiert, um position.coords.latitude in end var zu verwenden, aber ich verstehe nicht, warum sich "position.coords.latitude, position.coords.longitude" in "12.3456789,12.3456789" nicht ändert.

Hinweis: Ich bin mir sicher, dass position.coords.latitude und position.coords.longitude korrekt gefüllt sind, da ich mit einer Warnung die Rechtewerte sehen kann.

Dank für die Hilfe ...

+0

können Sie einfach einfügen, was genau in Ende var ausgegeben wird? –

+0

var Ende = "12.3456789,12.3456789"; – Charlie

+0

Was ist 'position.coords'? JS-Variable? Wenn ja, kannst du zeigen, wie du es definierst und wie ihm Wert zugewiesen wird? –

Antwort

0

Ihr Problem ist mit Variablen zu string in Javascript verketten. Wenn position.coords.latitude oder position.coords.longitude eine Zahl ist (oder es könnte eine Zeichenfolge sein, in diesem Fall ist es egal), um eine Zeichenfolge wie "12.3456789,12.3456789" daraus zu erhalten, müssen Sie die Variablen mit + Operator verbinden.

So sollten Sie haben:

var start = position.coords.latitude + "," + position.coords.longitude; 

In Ihrem Code.

EDIT

Ein Arbeitsbeispiel:

function geocode(){ 
 
    if (navigator.geolocation) { 
 
     navigator.geolocation.getCurrentPosition(calcRoute,function(error){ 
 
     \t alert("Geolocation does not work because:" + error.message); 
 
     }); 
 
    } else { 
 
     alert("Geolocation is not supported by this browser."); 
 
    } 
 
} 
 

 
function calcRoute(position) { 
 
    console.log(position); 
 
    var mapOptions = { 
 
     zoom: 10, 
 
     center: new google.maps.LatLng(position.coords.latitude, position.coords.longitude), 
 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
 
    }; 
 

 
    var map = new google.maps.Map(document.getElementById('map'), mapOptions); 
 
           
 
    var geocoder = new google.maps.Geocoder(); 
 
    var start = position.coords.latitude + "," + position.coords.longitude; 
 
    var end = "49.200147, 16.607560"; 
 
    var request = { 
 
     origin:start, 
 
     destination:end, 
 
     travelMode: google.maps.DirectionsTravelMode.DRIVING 
 
    }; 
 
    var directionsService = new google.maps.DirectionsService(); 
 
    directionsService.route(request, function(response, status) { 
 
     if (status == google.maps.DirectionsStatus.OK) { 
 
     var directionsDisplay = new google.maps.DirectionsRenderer(); 
 
     directionsDisplay.setMap(map); 
 
     directionsDisplay.setDirections(response); 
 
     }else{ 
 
     alert("Direction were not found:" + status); 
 
     } 
 
    }); 
 
}
<script src="http://maps.google.com/maps/api/js?sensor=false&libraries=geometry&dummy=.js"></script> 
 
<body onload="geocode()"> 
 
    <div id="map" style="height:400px; width:500px;"></div> 
 
</body>

+0

Ja, das ist der Weg, aber ich habe viele Möglichkeiten ausprobiert, ohne das richtige sintax zu finden. – Charlie

+0

Ich habe meine Antwort aktualisiert. Probieren Sie diesen Code auf Ihrem Server aus. Denken Sie daran, 'var end =" 12.3456, 12.3456 ";' mit einigen sinnvollen Werten zu ersetzen. Es gibt auch einen Fehlerrückruf im Code. Wenn etwas schief geht, wissen Sie warum. –

+0

Ich habe die URL meines Tests: http: //localhost/www.parcheggi.info/metropark/gmaps2.php? Id = 8 wie Sie sehen können (HTML-Quelle) das Skript füllen Sie nicht die Start-Var mit "12.34567" ... – Charlie