google maps/gmap3 - прокладка маршрута к известному пункту назначения из геолокации пользователя - требуется помощь
Я пытаюсь написать сценарий, который получит геолокацию пользователя - если он у него включен, и проложит маршрут до заранее определенного пункта назначения. если у них не включена геолокация, он должен просто отобразить заранее определенное местоположение. скрипт не работает, но вы должны иметь возможность получить хорошее представление о том, что я пытаюсь сделать, просмотрев код. я на правильном пути? Кто-нибудь может определить, почему это не работает?
<script type="text/javascript">
$(function (){
var dest = "Unit 20, Tallaght Business Centre, Whitestown Road, Tallaght Business Park, Ireland";
if(geolocEnabled()){
getLocation();
}else{
plotMarker(dest);
}
//check if geolocation enabled
function geolocEnabled(){
return navigator.geolocation;
}
//plot marker for VRF office
function plotMarker(dest){
$('#map').gmap3(
{ action: 'addMarker',
address: dest,
map:{
center: true,
zoom: 14
},
marker:{
options:{
draggable: false
}
}
}
);
}
//get user's location
function getLocation(){
$('#map').gmap3(
{ action : 'geoLatLng',
callback : function(latLng){
if (latLng){
plotRoute(latLng, dest);
return;
} else {
alert("Unable to determine your location. Enable geolocation services and try again, or consult the map for our location.");
plotMarker(dest);
}
}
});
}
//plot route
function plotRoute(latLng, dest){
$('#map').gmap3(
{ action:'getRoute',
options:{
origin: latLng,
destination: dest,
travelMode: google.maps.DirectionsTravelMode.DRIVING
},
callback: function(results){
if (!results) return;
$(this).gmap3(
{ action:'init',
zoom: 7,
mapTypeId: google.maps.MapTypeId.ROADMAP,
streetViewControl: true,
center: [53.337433,-6.2661]
},
{ action:'addDirectionsRenderer',
panelID: 'directions-panel',
options:{
preserveViewport: true,
draggable: false,
directions:results
}
}
);
}
}
);
}
});
</script>
вся помощь очень ценится.
РЕДАКТИРОВАТЬ: я даже не получаю предупреждение геолокации в браузере, когда я запускаю скрипт.
РЕДАКТИРОВАТЬ: я удалил {timeout: 10000} из getLocation, теперь он получает предупреждение. скрипт обновлен.
1 ответ
Геолокация является асинхронным процессом, результат не будет доступен, когда getLocation()
закончен.
Вызов plotRoute()
внутри обратного вызова $.gmap3.geoLatLng
и предоставить ожидаемые аргументы (latLng, dest)