0

我有这个代码:

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 点获取方向。它这样做。但问题是,方向错了。起点与它所说的相去甚远。看看这张图片: http: //imgur.com/7ayaonK,WKZzkpQ#1 标记 A 的实际坐标在绿色人图标附近。所以我在谷歌地图中输入了相同的精确坐标,我得到了这个:http: //imgur.com/7ayaonK,WKZzkpQ#0 这些是正确的方向。那么,如果它适用于 Google 地图,为什么 API 上的坐标不一样呢?

4

1 回答 1

1

您正在使用带有字符串参数的起点和终点,不能保证这些参数将用作 LatLng,提供的字符串必须以某种方式转换为 LatLng(通常通过地理编码)。当您对原点查询进行地理编码时,您会看到您得到错误的位置: http: //gmaps-samples-v3.googlecode.com/svn/trunk/geocoder/v3-geocoder-tool.html#q%3D42.0045384 %2021.4112488

我猜谷歌地图不仅仅是对查询进行地理编码,它检测到这个查询可能是一个 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
};
于 2013-06-30T12:28:28.147 回答