Google Maps API路线响应与原始坐标不同

时间:2016-01-22 22:14:47

标签: google-maps

我正在使用Google地图显示汽车的最后位置。通常情况下,这将位于主要道路旁的停车场,但是当我将停车场carLatLng的坐标输入Google的路线引擎时,我得到的响应看起来就是最近的道路。我如何得到它以便我输入的相同坐标是我从我的回答得到的坐标?

var carLatLng = new google.maps.LatLng(29.9461,-90.07)
var request = {
  origin: carLatLng,
  destination: 
  waypoints: [],
  optimizeWaypoints: true,
  travelMode: google.maps.TravelMode.WALKING
};

self.directionsService.route(request, function(response, status) {
  if (status === google.maps.DirectionsStatus.OK) {

    var lat = response.routes[0].legs[0].end_location.lat();
    var lng = response.routes[0].legs[0].end_location.lng();

    // lat = 29.946164
    // lng = -90.0702933

  }
});

2 个答案:

答案 0 :(得分:0)

DirectionsService 始终返回道路行车路线的起点/终点。如果您希望结果在其他地方结束,则需要自己扩展折线(您有原始坐标,从路线服务处那里绘制折线到路线的末端)。

proof of concept fiddle

代码段

var geocoder;
var map;

function initialize() {
  var map = new google.maps.Map(
    document.getElementById("map_canvas"), {
      center: new google.maps.LatLng(37.4419, -122.1419),
      zoom: 13,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    });
  var carLatLng = new google.maps.LatLng(29.9461, -90.07);
  var carMarker = new google.maps.Marker({
    map: map,
    position: carLatLng
  });
  var request = {
    origin: "Dixon, New Orleans, LA",
    destination: carLatLng,
    waypoints: [],
    optimizeWaypoints: true,
    travelMode: google.maps.TravelMode.WALKING
  };
  var directionsService = new google.maps.DirectionsService();
  var directionsRenderer = new google.maps.DirectionsRenderer({
    map: map,
    preserveViewport: true,
    polylineOptions: {
      strokeColor: "#0000FF"
    }
  })
  directionsService.route(request, function(response, status) {
    if (status === google.maps.DirectionsStatus.OK) {

      var lat = response.routes[0].legs[0].end_location.lat();
      var lng = response.routes[0].legs[0].end_location.lng();
      directionsRenderer.setDirections(response);
      map.setCenter(carLatLng);
      map.setZoom(20);
      var polyline = new google.maps.Polyline({
        map: map,
        strokeColor: "#0000FF",
        path: [carLatLng, response.routes[0].legs[0].end_location]
      });
      // lat = 29.946164
      // lng = -90.0702933

    }
  });
}
google.maps.event.addDomListener(window, "load", initialize);
html,
body,
#map_canvas {
  height: 100%;
  width: 100%;
  margin: 0px;
  padding: 0px
}
<script src="https://maps.googleapis.com/maps/api/js"></script>
<div id="map_canvas"></div>

答案 1 :(得分:-1)

我最近使用Google Map API做了很多,遗憾的是没有使用路由服务。

但是看看这些教程,它们非常详细,我发现它们非常有用:http://econym.org.uk/gmap/

对于你的情况,我特别关注第26部分。