场景
我试图在两者之间画一条路线n使用 Google 地图 v3 的点(纬度、局域网)。为此,我正在使用DirectionsService
它为我提供了一条路线,然后我将该坐标推入MVCArray
然后使用 a 绘制该路径Polyline
.
The code
这是一个 jsfiddle 演示了这部分代码 http://jsfiddle.net/a5xrc/1/.
HTML:
<div id='map'></div>
CSS:
#map{
width:400px;
height:400px;
}
JavaScript:
$(function () {
//The list of points to be connected
var markers = [
{
"title": 'Duero',
"lat": '40.480243',
"lng": '-3.866172',
"description": '1'
},
{
"title": 'Reyes Catolicos',
"lat": '40.477997',
"lng": '-3.870865',
"description": '2'
},
{
"title": 'Guadarrama',
"lat": '40.478998',
"lng": '-3.878755',
"description": '3'
}
];
var map;
var mapOptions = {
center: new google.maps.LatLng(markers[0].lat, markers[0].lng),
zoom: 15 ,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var path = new google.maps.MVCArray();
var service = new google.maps.DirectionsService();
var infoWindow = new google.maps.InfoWindow();
var map = new google.maps.Map(document.getElementById("map"), mapOptions);
var poly = new google.maps.Polyline({
map: map,
strokeColor: '#F3443C'
});
var lat_lng = new Array();
path.push(new google.maps.LatLng(markers[0].lat, markers[0].lng));
for (var i = 0; i < markers.length; i++) {
if ((i + 1) < markers.length) {
var src = new google.maps.LatLng(markers[i].lat, markers[i].lng);
var des = new google.maps.LatLng(markers[i+1].lat, markers[i+1].lng);
poly.setPath(path);
service.route({
origin: src,
destination: des,
travelMode: google.maps.DirectionsTravelMode.DRIVING
}, function (result, status) {
if (status == google.maps.DirectionsStatus.OK) {
for (var i = 0, len = result.routes[0].overview_path.length; i < len; i++) {
path.push(result.routes[0].overview_path[i]);
}
}
});
}
}
});
预期行为
我应该绘制一组直线,连接变量中指定的点(lat,lan)markers
,具有指定的宽度和颜色。进一步来说Point 1
正在连接just to Point 2
依次连接到Point 3
With the code in the fiddle, I would want to see, this:
实际行为
我得到了上一张图像,但并非总是如此。如果你刷新,有几次你最终会得到这个,我相信这是添加一条连接点的额外线的结果乌鸦飞翔然而,作为一种不一致的行为,我正在努力寻找它的根源,我简化了这个例子,你有一个尽可能小的顶点数组,据我所知,绘制的路径应该是相同的,因为数据是相同的。诚然,我从未深入研究过谷歌地图API,所以源代码主要是从在线工作示例中复制和粘贴的结果,特别是this one http://www.aspforums.net/Threads/151361/Google-Maps-V3-How-to-draw-route-between-two-locations-points/也面临着同样的问题。
这意味着我可能使用的是过时版本的 Google 地图、初始化不正确或任何其他基本问题或有缺陷的设置。或者在事情的另一方面,这可能是客户端的问题,比如 Mac Chrome 最新版本,因为显然我的手机上的 Android Chrome 没有发生这种情况(Nexus 5,最新,库存)