我有这段代码:
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?
答案 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
};