HTML 5 地理位置不适用于方向 API

HTML 5 Geolocation not working with Directions API

本文关键字:方向 API 适用于 不适用 地理位置 HTML      更新时间:2023-09-26

我正在尝试将地理位置API与方向服务一起使用,但我得到:

 var UserLoc;
if (navigator.geolocation) {                                        
     navigator.geolocation.getCurrentPosition(function(position) {
         var lat=position.coords.latitude;
         var lng=position.coords.longitude;
         console.log(lat);
         console.log(lng);
 UserLoc = new google.maps.LatLng(lat,lng);     
 var NewMarker = new google.maps.Marker({
position: UserLoc,
draggable: false,
animation: google.maps.Animation.DROP,
map: SEVTmap
});
     }
     );           
}
else {
    alert ( "Възникна проблем при намирането на местонахождението ви!" );  
}
 var directionsService = new google.maps.DirectionsService();
 var directionsDisplay = new google.maps.DirectionsRenderer();
 directionsDisplay.setMap(SEVTmap);
 var request = {
   origin: UserLoc,
   destination: Destination,
   travelMode: google.maps.DirectionsTravelMode.DRIVING
 };
 directionsService.route(request, function (response, status) {
   if (status == google.maps.DirectionsStatus.OK) {
     directionsDisplay.setDirections(response);
   }
 });

错误:InvalidValueError:在属性来源中:不是字符串;也不是 LatLng 或 LatLngLiteral:不是对象;也不是对象

标记已创建;

地理位置服务是异步的,您必须在其回调函数中使用结果,当它可用时/在哪里可用时,您必须在其回调函数中使用结果

var UserLoc;
if (navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(function(position) {
    var lat = position.coords.latitude;
    var lng = position.coords.longitude;
    console.log(lat);
    console.log(lng);
    UserLoc = new google.maps.LatLng(lat, lng);
    var NewMarker = new google.maps.Marker({
      position: UserLoc,
      draggable: false,
      animation: google.maps.Animation.DROP,
      map: SEVTmap
    });
    var directionsService = new google.maps.DirectionsService();
    var directionsDisplay = new google.maps.DirectionsRenderer({
      map: SEVTmap
    });
    directionsDisplay.setMap(SEVTmap);
    var request = {
      origin: UserLoc,
      destination: Destination,
      travelMode: google.maps.DirectionsTravelMode.DRIVING
    };
    directionsService.route(request, function(response, status) {
      if (status == google.maps.DirectionsStatus.OK) {
        directionsDisplay.setDirections(response);
      }
    });
  }, function (PositionError) {alert("geolocation error:"+PositionError.code+" msg="+PositionError.message);});
} else {
  alert("Възникна проблем при намирането на местонахождението ви!");
}