Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在源和目标之间绘制路径并连接所有点(城市)时,在google地图路径中获取意外线条_Javascript_Jquery_Google Maps_Google Maps Api 3_Google Places Api - Fatal编程技术网

Javascript 在源和目标之间绘制路径并连接所有点(城市)时,在google地图路径中获取意外线条

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

注意:只有在输入源和地址后,才可以点击谷歌地图上的查看按钮 仅在输入源和后添加目的地和路线点 目的地和不保留任何路线点文本框为空(即动态文本框)

源代码取自由geocodezip回答的源代码:

//代码在这里
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或它们的顺序。您可以在控制台中进行检查。我正在以完美的顺序获取我的所有数据。在我的标记数组中,我的所有数据都以适当的方式输入