HTML 5 Geolocation 不适用于 Directions API

Posted

技术标签:

【中文标题】HTML 5 Geolocation 不适用于 Directions API【英文标题】:HTML 5 Geolocation not working with Directions API 【发布时间】:2016-03-02 19:34:01 【问题描述】:

我正在尝试将 geolocations API 与 Directions 服务一起使用,但我得到:

 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: in property origin: not a string;而不是 LatLng 或 LatLngLiteral:不是对象;而不是一个对象

标记已创建;

【问题讨论】:

地理定位服务是异步的,你必须在它可用的时候/在哪里使用它的回调函数中的结果。 【参考方案1】:

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

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("Възникна проблем при намирането на местонахождението ви!");

【讨论】:

以上是关于HTML 5 Geolocation 不适用于 Directions API的主要内容,如果未能解决你的问题,请参考以下文章

navigator.geolocation.getCurrentPosition 不适用于 onClick

navigator.Geolocation GetCurrentpositon 不适用于 Chrome 和 Firefox

navigator.geolocation.getCurrentPosition 不适用于 Firefox

Cordova 插件 Geolocation 不适用于 Android 版本 Kitkat

地理定位不适用于带有 Meteor 的 iOS

Phonegap/Cordova Geolocation 不适用于 Android 4.0+,但适用于所有其他平台