当前位置: 首页 > 知识库问答 >
问题:

Google Maps API:将方向服务与watchPosition地理定位相结合

夹谷星剑
2023-03-14

我试图使用谷歌的方向服务显示一张地图,其中有原点、目的地和连接两者的蓝色方向线。然而,我试图使用watchPosition作为LAT/LNG的原产地。

到目前为止,一切都显示正确,除了绿色原点标记不移动,因为手表位置更新与新的LAT/LNG坐标。我想做的是可能的吗?或者我只需要创建第三个标记来跟随用户的坐标?

以下是我脚本中的内容:

    var directionsDisplay;
    var directionsService = new google.maps.DirectionsService();
    var map;

    function initialize() {
      directionsDisplay = new google.maps.DirectionsRenderer();
      var mapOptions = {
        zoom:7,
        center: new google.maps.LatLng(38.5815719, -121.4943996)
      }
      map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
      directionsDisplay.setMap(map);
      calcRoute();
}

function handleNoGeolocation(errorFlag) {
  if (errorFlag) {
    var content = 'Error: The Geolocation service failed.';
} else {
    var content = 'Error: Your browser doesn\'t support geolocation.';
}

  var options = {
    map: map,
    position: new google.maps.LatLng(<%= @order.origin_lat %>, <%= @order.origin_lng %>),
    content: content
  };

  var infowindow = new google.maps.InfoWindow(options);
  map.setCenter(options.position);
}



function calcRoute() {
    if(navigator.geolocation) {
        navigator.geolocation.watchPosition(function(position) {
            var pos = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
            var request = {
                  origin: pos,
                  destination: new google.maps.LatLng(<%= @order.user.latitude %>, <%= @order.user.longitude %>),
                  travelMode: google.maps.TravelMode.DRIVING
              };
            directionsService.route(request, function(response, status) {
            if (status == google.maps.DirectionsStatus.OK) {
                  directionsDisplay.setDirections(response);
                }
            });
        },

        function() {
        handleNoGeolocation(true);
        });
    } else {
    // Browser doesn't support Geolocation
        handleNoGeolocation(false);
    }

}

google.maps.event.addDomListener(window, 'load', initialize);

共有1个答案

荆弘伟
2023-03-14

在移动web中,这看起来并不容易实现,所以我只创建了第三个根据用户位置移动的标记。

 类似资料:
  • 我对谷歌地图方向服务(api v3)有一个问题。我不知道如何指定起始和目标字符串。例如,对于请求: http://maps.googleapis.com/maps/api/js?sensor=false 或者 http://maps.googleapis.com/maps/api/directions/xml?sensor=false 服务器的响应为:未找到,即未找到路由, 但是,如果我将字符¨改

  • 主要内容:定位用户的位置,浏览器支持,HTML5 - 使用地理定位,实例,处理错误和拒绝,实例,在地图中显示结果,实例,给定位置的信息,getCurrentPosition() 方法 - 返回数据,Geolocation 对象 - 其他有趣的方法,实例HTML5 Geolocation(地理定位)用于定位用户的位置。 定位用户的位置 HTML5 Geolocation API 用于获得用户的地理位置。 鉴于该特性可能侵犯用户的隐私,除非用户同意,否则用户位置信息是不可用的。 浏览器支持 Inte

  • 我使用OrientDB的非关系型数据库,我不知道如何查询地理位置准确。 OrientDB函数 但不理解价值观的意义。 距离函数: distance()-使用Haversine算法计算地球上两点之间的距离。坐标必须为度 例: 其中距离(x,y,52.20472,0.14056) 两个问题: X,Y和30个值是多少 谢谢

  • HTML5 Geolocation(地理定位)用于定位用户的位置。 定位用户的位置 HTML5 Geolocation API 用于获得用户的地理位置。 鉴于该特性可能侵犯用户的隐私,除非用户同意,否则用户位置信息是不可用的。 浏览器支持 Internet Explorer 9+, Firefox, Chrome, Safari 和 Opera 支持Geolocation(地理定位). 注意: G

  • 我有一个带有地理定位插件的cordova应用程序:https://github.com/apache/cordova-plugin-geolocation 我的很多用户报告说,我的应用程序中的地理定位速度很慢(他们所说的慢大约是6秒)。他们说当我们使用Waze时,需要2秒钟。。。 我在SO上也发现了这篇帖子:为什么HTML5地理定位比Android上的原生版本慢? 我已经在使用Cordova人行横

  • 描述 (Description) watchPosition方法检索有关设备当前地理位置的定期更新。 该位置表示为一组地理坐标以及有关航向和速度的信息。 位置信息在Position对象中返回。 每次更新都会返回一个新的Position对象。 语法 (Syntax) 以下是此方法的语法 - watchPosition(showLocation, ErrorHandler, options); 参数