Javascript 谷歌地图,多段线绘制;额外的;线路-can';我看不出是什么';发生什么事了

Javascript 谷歌地图,多段线绘制;额外的;线路-can';我看不出是什么';发生什么事了,javascript,php,google-maps,google-polyline,Javascript,Php,Google Maps,Google Polyline,我从一个数据库中查询了2组坐标,显示了一条我们乘坐气球飞行的轨迹。 我在起飞和着陆时放置标记。 现在,我想在两条轨迹中的起飞和着陆之间绘制一条多段线,但出于某种原因,也要在与多段线链接的两个着陆点之间绘制一条多段线。 例如: 我不知道会发生什么-我尝试在每个循环中将坐标数组的长度写为0,但没有帮助 function load() { var lastlat; var lastlng; var map = new google.maps.Map(document.getEl

我从一个数据库中查询了2组坐标,显示了一条我们乘坐气球飞行的轨迹。 我在起飞和着陆时放置标记。 现在,我想在两条轨迹中的起飞和着陆之间绘制一条多段线,但出于某种原因,也要在与多段线链接的两个着陆点之间绘制一条多段线。 例如:

我不知道会发生什么-我尝试在每个循环中将坐标数组的长度写为0,但没有帮助

function load() {
   var lastlat;
   var lastlng;
      var map = new google.maps.Map(document.getElementById("map"), {
        center: new google.maps.LatLng(55.44, 11.80),
        zoom: 17,
        mapTypeId: google.maps.MapTypeId.ROADMAP
      });
    var infoWindow = new google.maps.InfoWindow;
    var flightPlanCoordinates = [];

<?php while($row = mysql_fetch_array($result)) { ?>
      // Change this depending on the name of your PHP file
      flightPlanCoordinates.length = 0;
      downloadUrl("phpsqlajax_genxmlall.php?LogDate=<?php echo $row['Log_Date'] ?>&TimeOfDay=<?php echo $row['TimeOfDay'] ?>&Log_Name=<?php echo $row['Log_Name'] ?>", function(data) {
        var xml = data.responseXML;
        var markers = xml.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) {
          flightPlanCoordinates[i] = new google.maps.LatLng(markers[i].getAttribute("lat"), markers[i].getAttribute("lng"));
        }

      flightPath = new google.maps.Polyline({
                path: flightPlanCoordinates,
                strokeColor: "#0000FF",
                strokeOpacity: 0.8,
                strokeWeight: 2
                });
      flightPath.setMap(map);

          //Show first marker
      var name = markers[0].getAttribute("name");
      var address = markers[0].getAttribute("address");
      var type = markers[0].getAttribute("BalloonStatus");
      var point = new google.maps.LatLng(
      parseFloat(markers[0].getAttribute("lat")),
      parseFloat(markers[0].getAttribute("lng")));
      var html = "<div style = 'height:75px;width:250px'><b>" + name + "</b> <br/>" + address +"<br/> Status : "+type;
      var icon = customIcons[type] || {};
      var marker = new google.maps.Marker({
        map: map,
        position: point,
        icon: icon.icon,
        shadow: icon.shadow
      });
      bindInfoWindow(marker, map, infoWindow, html);
      lastlat = markers[0].getAttribute("lat");
      lastlng = markers[0].getAttribute("lng");

      //Show last marker
      var point1 = new google.maps.LatLng(
              parseFloat(markers[0].getAttribute("lat")),
              parseFloat(markers[0].getAttribute("lng")));
      var point2 = new google.maps.LatLng(
              parseFloat(markers[markers.length-1].getAttribute("lat")),
              parseFloat(markers[markers.length-1].getAttribute("lng")));

      var distance = getDistance(point1, point2);
      var distancekm = Math.round((distance/1000)*10)/10;
      var name = markers[markers.length-1].getAttribute("name");
      var address = markers[markers.length-1].getAttribute("address");
      var type = markers[markers.length-1].getAttribute("BalloonStatus");
      var point = new google.maps.LatLng(
          parseFloat(markers[markers.length-1].getAttribute("lat")),
          parseFloat(markers[markers.length-1].getAttribute("lng")));
      var html = "<div style = 'height:75px;width:250px'><b>" + name + "</b> <br/>" + address +"<br/>Distance : "+ distancekm +" km<br/> Status : "+type;
      var icon = customIcons[type] || {};
      var marker = new google.maps.Marker({
        map: map,
        position: point,
        icon: icon.icon,
        shadow: icon.shadow
      });
      bindInfoWindow(marker, map, infoWindow, html);
      lastlat = markers[markers.length-1].getAttribute("lat");
      lastlng = markers[markers.length-1].getAttribute("lng");

    var bounds = new google.maps.LatLngBounds();
     for (var i = 0; i < markers.length; i++) {
         bounds.extend(new google.maps.LatLng(markers[i].getAttribute("lat"), markers[i].getAttribute("lng")));
    }

       map.fitBounds(bounds);

      }); //Downlaod URL 
  <?php } ?>  //End DB Loop
} // Load
函数加载(){
var lastlat;
var lastlng;
var map=new google.maps.map(document.getElementById(“map”){
中心:新google.maps.LatLng(55.44,11.80),
缩放:17,
mapTypeId:google.maps.mapTypeId.ROADMAP
});
var infoWindow=new google.maps.infoWindow;
var FlightPlan坐标=[];
//根据PHP文件的名称更改此选项
flightPlanCoordinates.length=0;
下载URL(“phpsqlajax_genxmlall.php?LogDate=&TimeOfDay=&Log_Name=”,函数(数据){
var xml=data.responseXML;
var markers=xml.documentElement.getElementsByTagName(“标记”);
对于(var i=0;i“+地址+”
状态:“+类型; var icon=customIcons[type]| |{}; var marker=new google.maps.marker({ 地图:地图, 位置:点,, icon:icon.icon, 阴影:icon.shadow }); bindInfoWindow(标记、地图、infoWindow、html); lastlat=标记[0]。getAttribute(“lat”); lastlng=标记[0]。获取属性(“lng”); //显示最后一个标记 var point1=new google.maps.LatLng( parseFloat(标记[0].getAttribute(“lat”), parseFloat(标记[0].getAttribute(“lng”)); var point2=新的google.maps.LatLng( parseFloat(markers[markers.length-1].getAttribute(“lat”), parseFloat(markers[markers.length-1].getAttribute(“lng”)); var距离=getDistance(点1,点2); var distancekm=数学圆((距离/1000)*10)/10; var name=markers[markers.length-1].getAttribute(“名称”); var address=markers[markers.length-1].getAttribute(“地址”); var type=markers[markers.length-1].getAttribute(“气球状态”); var point=new google.maps.LatLng( parseFloat(markers[markers.length-1].getAttribute(“lat”), parseFloat(markers[markers.length-1].getAttribute(“lng”)); var html=“”+name+”
“+address+”
距离:“+Distance km+”km
状态:“+type; var icon=customIcons[type]| |{}; var marker=new google.maps.marker({ 地图:地图, 位置:点,, icon:icon.icon, 阴影:icon.shadow }); bindInfoWindow(标记、地图、infoWindow、html); lastlat=markers[markers.length-1].getAttribute(“lat”); lastlng=markers[markers.length-1].getAttribute(“lng”); var bounds=new google.maps.LatLngBounds(); 对于(var i=0;i
在两个异步回调函数中使用相同的坐标数组。在回调函数运行之前,它将在回调函数之外重置为0长度,因此您将在第二个回调函数中得到两条多段线的所有坐标

像这样的方法应该会奏效:

function load() {
   var lastlat;
   var lastlng;
      var map = new google.maps.Map(document.getElementById("map"), {
        center: new google.maps.LatLng(55.44, 11.80),
        zoom: 17,
        mapTypeId: google.maps.MapTypeId.ROADMAP
      });
    var infoWindow = new google.maps.InfoWindow;

<?php while($row = mysql_fetch_array($result)) { ?>
      downloadUrl("phpsqlajax_genxmlall.php?LogDate=<?php echo $row['Log_Date'] ?>&TimeOfDay=<?php echo $row['TimeOfDay'] ?>&Log_Name=<?php echo $row['Log_Name'] ?>", function(data) {
        // declare a new array of coordinates in each callback function.
        var flightPlanCoordinates = [];
        var xml = data.responseXML;
        var markers = xml.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) {
          flightPlanCoordinates[i] = new google.maps.LatLng(markers[i].getAttribute("lat"), markers[i].getAttribute("lng"));
        }

      flightPath = new google.maps.Polyline({
                path: flightPlanCoordinates,
                strokeColor: "#0000FF",
                strokeOpacity: 0.8,
                strokeWeight: 2
                });
      flightPath.setMap(map);

          //Show first marker
      var name = markers[0].getAttribute("name");
      var address = markers[0].getAttribute("address");
      var type = markers[0].getAttribute("BalloonStatus");
      var point = new google.maps.LatLng(
      parseFloat(markers[0].getAttribute("lat")),
      parseFloat(markers[0].getAttribute("lng")));
      var html = "<div style = 'height:75px;width:250px'><b>" + name + "</b> <br/>" + address +"<br/> Status : "+type;
      var icon = customIcons[type] || {};
      var marker = new google.maps.Marker({
        map: map,
        position: point,
        icon: icon.icon,
        shadow: icon.shadow
      });
      bindInfoWindow(marker, map, infoWindow, html);
      lastlat = markers[0].getAttribute("lat");
      lastlng = markers[0].getAttribute("lng");

      //Show last marker
      var point1 = new google.maps.LatLng(
              parseFloat(markers[0].getAttribute("lat")),
              parseFloat(markers[0].getAttribute("lng")));
      var point2 = new google.maps.LatLng(
              parseFloat(markers[markers.length-1].getAttribute("lat")),
              parseFloat(markers[markers.length-1].getAttribute("lng")));

      var distance = getDistance(point1, point2);
      var distancekm = Math.round((distance/1000)*10)/10;
      var name = markers[markers.length-1].getAttribute("name");
      var address = markers[markers.length-1].getAttribute("address");
      var type = markers[markers.length-1].getAttribute("BalloonStatus");
      var point = new google.maps.LatLng(
          parseFloat(markers[markers.length-1].getAttribute("lat")),
          parseFloat(markers[markers.length-1].getAttribute("lng")));
      var html = "<div style = 'height:75px;width:250px'><b>" + name + "</b> <br/>" + address +"<br/>Distance : "+ distancekm +" km<br/> Status : "+type;
      var icon = customIcons[type] || {};
      var marker = new google.maps.Marker({
        map: map,
        position: point,
        icon: icon.icon,
        shadow: icon.shadow
      });
      bindInfoWindow(marker, map, infoWindow, html);
      lastlat = markers[markers.length-1].getAttribute("lat");
      lastlng = markers[markers.length-1].getAttribute("lng");

    var bounds = new google.maps.LatLngBounds();
     for (var i = 0; i < markers.length; i++) {
         bounds.extend(new google.maps.LatLng(markers[i].getAttribute("lat"), markers[i].getAttribute("lng")));
    }

       map.fitBounds(bounds);

      }); //Download URL 
  <?php } ?>  //End DB Loop
} // Load
函数加载(){
var lastlat;
var lastlng;
var map=new google.maps.map(document.getElementById(“map”){
中心:新google.maps.LatLng(55.44,11.80),
缩放:17,
mapTypeId:google.maps.mapTypeId.ROADMAP
});
var infoWindow=new google.maps.infoWindow;
下载URL(“phpsqlajax_genxmlall.php?LogDate=&TimeOfDay=&Log_Name=”,函数(数据){
//在每个回调函数中声明一个新的坐标数组。
var FlightPlan坐标=[];
var xml=data.responseXML;
var markers=xml.documentElement.getElementsByTagName(“标记”);
对于(var i=0;i“+地址+”
状态:“+类型; var icon=customIcons[type]| |{}; var marker=new google.maps.marker({ 地图:地图, 位置:点,, icon:icon.icon, 阴影:icon.shadow }); 宾丁