Google maps api 3 谷歌地图API:从谷歌地图提供的内容中获得不同的方向?

Google maps api 3 谷歌地图API:从谷歌地图提供的内容中获得不同的方向?,google-maps-api-3,Google Maps Api 3,我有以下代码: var directionsService = new google.maps.DirectionsService(); var directionsDisplay = new google.maps.DirectionsRenderer({ 'map': map }); var request = { origin:'42.0045384 21.4112488', destination:'41.997056 21.435871', travelMode: goo

我有以下代码:

var directionsService = new google.maps.DirectionsService();
var directionsDisplay = new google.maps.DirectionsRenderer({ 'map': map }); 
var request = {
  origin:'42.0045384 21.4112488',
  destination:'41.997056 21.435871',
  travelMode: google.maps.TravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
  if (status == google.maps.DirectionsStatus.OK) {
    directionsDisplay.setDirections(response);
  }
});
它应该从2个GPS点获得方向。它做到了。但问题是,方向错了。起点不在它所说的附近。 请看这张图片: 标记A的实际坐标靠近绿色人图标。 所以我在谷歌地图上输入了相同的精确坐标,我得到: 这些是正确的方向。
因此,如果它在谷歌地图上工作,为什么相同的坐标不能在API上工作?

您使用的是带有字符串参数的起点和终点,不能保证这些参数将用作LatLng,提供的字符串必须以某种方式转换为LatLng(通常通过地理编码)。当您对原始数据查询进行地理编码时,您将看到您得到了错误的位置:

我猜谷歌地图不仅仅是对查询进行地理编码,它检测到这个查询可能是一个LatLng,并将其用作LatLng而不是地址

解决方案很简单,当您知道这两个参数都是LatLng时,将它们用作LatLng,您将得到所需的结果:

var request = {
  origin:      new google.maps.LatLng(42.0045384,21.4112488),
  destination: new google.maps.LatLng(41.997056,21.435871),
  travelMode:  google.maps.TravelMode.DRIVING
};