Javascript 在源和目标之间绘制路径并连接所有点(城市)时,在google地图路径中获取意外线条
注意:只有在输入源和地址后,才可以点击谷歌地图上的查看按钮 仅在输入源和后添加目的地和路线点 目的地和不保留任何路线点文本框为空(即动态文本框) 源代码取自由geocodezip回答的源代码:Javascript 在源和目标之间绘制路径并连接所有点(城市)时,在google地图路径中获取意外线条,javascript,jquery,google-maps,google-maps-api-3,google-places-api,Javascript,Jquery,Google Maps,Google Maps Api 3,Google Places Api,注意:只有在输入源和地址后,才可以点击谷歌地图上的查看按钮 仅在输入源和后添加目的地和路线点 目的地和不保留任何路线点文本框为空(即动态文本框) 源代码取自由geocodezip回答的源代码: //代码在这里 var-cnt=1; var自动完成=[]; var标记=[]; var标记=[]; var usedIds=[]; var-map=null; var maxNumberOfTextboxAllowed=5; var insertTextboxId=[]; google.maps.ev
//代码在这里
var-cnt=1;
var自动完成=[];
var标记=[];
var标记=[];
var usedIds=[];
var-map=null;
var maxNumberOfTextboxAllowed=5;
var insertTextboxId=[];
google.maps.event.addDomListener(窗口'load',函数(){
var places=new google.maps.places.Autocomplete(document.getElementById('source');
google.maps.event.addListener(places,'place_changed',函数(){
var place=places.getPlace();
var数据=
{
“LocationName”:document.getElementById(“源”).value,
“lat”:place.geometry.location.lat().toString(),
“lng”:place.geometry.location.lng().toString()
}
如果(markers.length>0)
{
标记.拼接(0,1,数据)
}
其他的
markers.splice(0,0,数据);//splice(位置,numberOfItemsToRemove,项)
});
var places1=new google.maps.places.Autocomplete(document.getElementById('destination');
google.maps.event.addListener(places1,'place_changed',函数(){
var place1=places1.getPlace();
var数据=
{
“LocationName”:document.getElementById(“目的地”).value,
“lat”:位置1.几何体.位置.lat().toString(),
“lng”:place1.geometry.location.lng().toString()
}
如果(markers.length==1){
标记。拼接(1,1,数据);
}
else if(markers.length>0)
标记.拼接(标记.长度-1,1,数据)
});
});
函数GenerateSourceDestinationPoint(){
如果(cnt问题:地理编码异步运行。无法保证路由回调将按所需顺序执行
当您得到这些直线时,顺序将混淆(在原始演示中也会发生),因为您总是将overview_多段线附加到路径
必须首先创建整个路径(按正确顺序),然后绘制多段线
然而:
始终创建新地图不是一个好方法(这会影响地图加载配额)
当您将航路点限制在5个时,您可以使用DirectionsService请求完整的路线(最多可以有8个航路点)
问题:地理编码是异步运行的。不能保证路由回调将按所需顺序执行
当您得到这些直线时,顺序将混淆(在原始演示中也会发生),因为您总是将overview_多段线附加到路径
必须首先创建整个路径(按正确顺序),然后绘制多段线
然而:
始终创建新地图不是一个好方法(这会影响地图加载配额)
当您将航路点限制在5个时,您可以使用DirectionsService请求完整的路线(最多可以有8个航路点)
问题:地理编码是异步运行的。不能保证路由回调将按所需顺序执行
当您得到这些直线时,顺序将混淆(在原始演示中也会发生),因为您总是将overview_多段线附加到路径
必须首先创建整个路径(按正确顺序),然后绘制多段线
然而:
始终创建新地图不是一个好方法(这会影响地图加载配额)
当您将航路点限制在5个时,您可以使用DirectionsService请求完整的路线(最多可以有8个航路点)
问题:地理编码是异步运行的。不能保证路由回调将按所需顺序执行
当您得到这些直线时,顺序将混淆(在原始演示中也会发生),因为您总是将overview_多段线附加到路径
必须首先创建整个路径(按正确顺序),然后绘制多段线
然而:
始终创建新地图不是一个好方法(这会影响地图加载配额)
当您将航路点限制在5个时,您可以使用DirectionsService请求完整的路线(最多可以有8个航路点)
如果您需要航路点,请将其包含在方向服务请求中。您的问题是将路线的各个部分放在一起
function initialize() {
var bounds = new google.maps.LatLngBounds();
var mapOptions = {
center: new google.maps.LatLng(parseFloat(markers[0].lat), parseFloat(markers[0].lng)),
zoom: 10,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var path = new google.maps.MVCArray();
var service = new google.maps.DirectionsService();
var infoWindow = new google.maps.InfoWindow();
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
var poly = new google.maps.Polyline({
map: map,
strokeColor: '#F3443C'
});
var lat_lng = [];
var marker = new google.maps.Marker({
position: map.getCenter(),
map: map
});
bounds.extend(marker.getPosition());
var src,des;
var waypoints = [];
for (var i = 0; i < markers.length; i++) {
if (i===0) {
src = new google.maps.LatLng(parseFloat(markers[i].lat),
parseFloat(markers[i].lng));
var smarker = new google.maps.Marker({ position: src, map: map });
bounds.extend(smarker.getPosition());
} else if (i==markers.length-1) {
des = new google.maps.LatLng(parseFloat(markers[i].lat),
parseFloat(markers[i].lng));
var dmarker = new google.maps.Marker({ position: des, map: map });
bounds.extend(dmarker.getPosition());
} else {
var latlng = new google.maps.LatLng(markers[i].lat, markers[i].lng);
waypoints.push({location: latlng,
stopover:true});
var marker = new google.maps.Marker({
position: latlng,
map: map
});
}
}
service.route({
origin: src,
destination: des,
waypoints: waypoints,
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]);
}
poly.setPath(path);
map.fitBounds(bounds);
}
});
}
来源
目的地
加分
如果您需要航路点,请将它们包含在方向服务请求中。您的问题是将路线的各个部分放在一起
function initialize() {
var bounds = new google.maps.LatLngBounds();
var mapOptions = {
center: new google.maps.LatLng(parseFloat(markers[0].lat), parseFloat(markers[0].lng)),
zoom: 10,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var path = new google.maps.MVCArray();
var service = new google.maps.DirectionsService();
var infoWindow = new google.maps.InfoWindow();
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
var poly = new google.maps.Polyline({
map: map,
strokeColor: '#F3443C'
});
var lat_lng = [];
var marker = new google.maps.Marker({
position: map.getCenter(),
map: map
});
bounds.extend(marker.getPosition());
var src,des;
var waypoints = [];
for (var i = 0; i < markers.length; i++) {
if (i===0) {
src = new google.maps.LatLng(parseFloat(markers[i].lat),
parseFloat(markers[i].lng));
var smarker = new google.maps.Marker({ position: src, map: map });
bounds.extend(smarker.getPosition());
} else if (i==markers.length-1) {
des = new google.maps.LatLng(parseFloat(markers[i].lat),
parseFloat(markers[i].lng));
var dmarker = new google.maps.Marker({ position: des, map: map });
bounds.extend(dmarker.getPosition());
} else {
var latlng = new google.maps.LatLng(markers[i].lat, markers[i].lng);
waypoints.push({location: latlng,
stopover:true});
var marker = new google.maps.Marker({
position: latlng,
map: map
});
}
}
service.route({
origin: src,
destination: des,
waypoints: waypoints,
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]);
}
poly.setPath(path);
map.fitBounds(bounds);
}
});
}
来源
目的地
加分
如果您需要航路点,请将它们包含在方向服务请求中。您的问题是将路线的各个部分放在一起
function initialize() {
var bounds = new google.maps.LatLngBounds();
var mapOptions = {
center: new google.maps.LatLng(parseFloat(markers[0].lat), parseFloat(markers[0].lng)),
zoom: 10,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var path = new google.maps.MVCArray();
var service = new google.maps.DirectionsService();
var infoWindow = new google.maps.InfoWindow();
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
var poly = new google.maps.Polyline({
map: map,
strokeColor: '#F3443C'
});
var lat_lng = [];
var marker = new google.maps.Marker({
position: map.getCenter(),
map: map
});
bounds.extend(marker.getPosition());
var src,des;
var waypoints = [];
for (var i = 0; i < markers.length; i++) {
if (i===0) {
src = new google.maps.LatLng(parseFloat(markers[i].lat),
parseFloat(markers[i].lng));
var smarker = new google.maps.Marker({ position: src, map: map });
bounds.extend(smarker.getPosition());
} else if (i==markers.length-1) {
des = new google.maps.LatLng(parseFloat(markers[i].lat),
parseFloat(markers[i].lng));
var dmarker = new google.maps.Marker({ position: des, map: map });
bounds.extend(dmarker.getPosition());
} else {
var latlng = new google.maps.LatLng(markers[i].lat, markers[i].lng);
waypoints.push({location: latlng,
stopover:true});
var marker = new google.maps.Marker({
position: latlng,
map: map
});
}
}
service.route({
origin: src,
destination: des,
waypoints: waypoints,
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]);
}
poly.setPath(path);
map.fitBounds(bounds);
}
});
}
来源
目的地
加分
如果您需要航路点,请将它们包含在方向服务请求中。您的问题是将路线的各个部分放在一起
function initialize() {
var bounds = new google.maps.LatLngBounds();
var mapOptions = {
center: new google.maps.LatLng(parseFloat(markers[0].lat), parseFloat(markers[0].lng)),
zoom: 10,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var path = new google.maps.MVCArray();
var service = new google.maps.DirectionsService();
var infoWindow = new google.maps.InfoWindow();
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
var poly = new google.maps.Polyline({
map: map,
strokeColor: '#F3443C'
});
var lat_lng = [];
var marker = new google.maps.Marker({
position: map.getCenter(),
map: map
});
bounds.extend(marker.getPosition());
var src,des;
var waypoints = [];
for (var i = 0; i < markers.length; i++) {
if (i===0) {
src = new google.maps.LatLng(parseFloat(markers[i].lat),
parseFloat(markers[i].lng));
var smarker = new google.maps.Marker({ position: src, map: map });
bounds.extend(smarker.getPosition());
} else if (i==markers.length-1) {
des = new google.maps.LatLng(parseFloat(markers[i].lat),
parseFloat(markers[i].lng));
var dmarker = new google.maps.Marker({ position: des, map: map });
bounds.extend(dmarker.getPosition());
} else {
var latlng = new google.maps.LatLng(markers[i].lat, markers[i].lng);
waypoints.push({location: latlng,
stopover:true});
var marker = new google.maps.Marker({
position: latlng,
map: map
});
}
}
service.route({
origin: src,
destination: des,
waypoints: waypoints,
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]);
}
poly.setPath(path);
map.fitBounds(bounds);
}
});
}
来源
目的地
加分
您的数据有问题。请检查点lat、lng或它们的顺序。您可以在控制台中进行检查。我正在以完美的顺序获取我的所有数据。在我的标记数组中,我的所有数据都以适当的方式输入