2016-05-28 2 views
-1

Прошу прощения, но я не эксперт по JavaScript, мне нужно получить Широта и долготу в переменной для отслеживания маршрута с помощью Google Maps.Javascript: поместите GPS-координаты в 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 
    }; 

Этот код работает, если я пишу

 var start = "12.3456789,12.3456789"; 

Как вы можете видеть, используя PHP, чтобы положить COORDS конце работает отлично. Я пробовал разные способы использования position.coords.latitude в end var, но я не понимаю, почему «position.coords.latitude, position.coords.longitude» не изменяется в «12.3456789,12.3456789».

Примечание: Я уверен, что position.coords.latitude и position.coords.longitude заполнены правильно, потому что с помощью предупреждения я могу видеть значения прав.

Спасибо за помощь ...

+0

вы можете просто вставить, что именно получает выводимый в конечном вар? –

+0

var end = "12.3456789,12.3456789"; – Charlie

+0

Что такое 'position.coords'? JS переменная? если да, то можете ли вы показать, как вы его определяете и как оно назначено? –

ответ

0

Ваша проблема с конкатенации переменных string в JavaScript. Если position.coords.latitude или position.coords.longitude - это номер (или это может быть строка, в этом случае это не имеет значения), чтобы получить строку, такую ​​как "12.3456789,12.3456789", вам необходимо подключить переменные с помощью оператора +.

Таким образом, вы должны иметь:

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

В вашем коде.

EDIT

Рабочий пример:

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

Да, это так, но я пробовал много способов, не найдя правильный синтакс. – Charlie

+0

Я обновил свой ответ. Попробуйте этот код на своем сервере. Не забудьте заменить 'var end =" 12.3456, 12.3456 ";' с некоторыми значимыми значениями. В коде есть также обратный вызов ошибки, поэтому, если что-то пойдет не так, вы поймете, почему. –

+0

Я поместил URL моего теста: http: //localhost/www.parcheggi.info/metropark/gmaps2.php? Id = 8, как вы можете видеть (источник HTML), скрипт не заполняет start var «12.34567», ... – Charlie

Смежные вопросы