谷歌地图API:从谷歌地图提供的不同方向?

时间:2013-06-30 10:28:46

标签: 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: 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?

1 个答案:

答案 0 :(得分:1)

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

我猜Google地图不仅仅是对查询进行地理编码,而是检测到此查询可能是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
};
相关问题