Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.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中按日期将多段线分组_Javascript_Jquery_Google Maps Api 3 - Fatal编程技术网

在javascript中按日期将多段线分组

在javascript中按日期将多段线分组,javascript,jquery,google-maps-api-3,Javascript,Jquery,Google Maps Api 3,这件事我坚持了两天。我从文件中获取坐标,并使用多段线在地图上绘制它们。我有复选框来显示每条路线路线的日期,悬停时我会在地图上更改该路线的颜色。此外,在选中/取消选中时,还有一个显示/隐藏多段线的函数。我有5条多段线。其中3个在2014/10/17,2个在2014/10/16。 如何按日期对这些路线进行分组,当我取消选中日期2014/10/17时,2014/10/17上的多段线将消失 下面是一些代码: $this->gmaps将运行5次。所以我有5个变量Route1,Route2。。。 这些是复

这件事我坚持了两天。我从文件中获取坐标,并使用多段线在地图上绘制它们。我有复选框来显示每条路线路线的日期,悬停时我会在地图上更改该路线的颜色。此外,在选中/取消选中时,还有一个显示/隐藏多段线的函数。我有5条多段线。其中3个在2014/10/17,2个在2014/10/16。 如何按日期对这些路线进行分组,当我取消选中日期2014/10/17时,2014/10/17上的多段线将消失

下面是一些代码:

$this->gmaps将运行5次。所以我有5个变量Route1,Route2。。。

这些是复选框。在这里,我添加了数据routedate,因为我认为我必须向Route传递第二个参数。。。或者我不知道

        $i = 0;
        foreach ($this->groupdates as $value) {
            echo '';
            echo '<label class="checkbox">
             <input checked type="checkbox" id="' . $i . '"  
             data-route="Route' . $i . '"
             data-routedate=' . $value['dateendRoute']. '';
            echo 'onclick="isChecked(this);"> ' . $value['dateendRoute'];
            echo '</label>';
            $i++;
?>

谢谢大家!!如果我不够清楚,请询问。

我所要做的就是用当前日期的变量填充数据路径,如下所示

$i = 0; // id checkbox
    $id = 0; // count for each checkbox for reach route  unique var     
    if ($this->gmaps) {
        foreach ($this->coords as $index => $value) {
            $num = count($value);
            $x = 0; // counter for the end of inner loop
            echo '<label class="checkbox">
             <input checked type="checkbox" id=' . $i . '
             data-route=';
            foreach ($value as $idroute) {
                if ($num - 1 != $x) {
                    echo 'Route' . $id . ',';
                } else {
                    echo 'Route' . $id;
                }
                $x++;
                $id++;
            }
            echo '  ';
            echo "onclick='isChecked(this);'> " . $index;
            echo "</label>";
            $i++;
        }
然后在js中拆分它们并创建一个数组

    function isChecked(checkbox) {
    //var Route = $(checkbox).data('route');
    var Route = $(checkbox).data('route').split(",");
    for (var i = 0; i < Route.length; i++) {
        if ($(checkbox).is(':checked') == true) {
            window[Route[i]].setMap(map);
        } else {
            window[Route[i]].setMap(null);
        }
    }
}
在这种情况下,您可以使用数据属性作为数组来传递值。 希望这能帮助别人

    var bounds = new google.maps.LatLngBounds();    // set bounds
    for (var i = 0; i < allcoordinates.length; i++) {
        bounds.extend(allcoordinates[i]);
    }
    bounds.getCenter();
    map.fitBounds(bounds);
<?
$i = 0;
foreach ($this->gmaps as $value) {
    echo 'Route' . $i . '.setMap(map);';
    $i++;
}
function isChecked(checkbox) {
    var Route = $(checkbox).data('route');
    if ($(checkbox).is(':checked') == true) {
        window[Route].setMap(map);
    } else {
        window[Route].setMap(null);
    }
}
        $i = 0;
        foreach ($this->groupdates as $value) {
            echo '';
            echo '<label class="checkbox">
             <input checked type="checkbox" id="' . $i . '"  
             data-route="Route' . $i . '"
             data-routedate=' . $value['dateendRoute']. '';
            echo 'onclick="isChecked(this);"> ' . $value['dateendRoute'];
            echo '</label>';
            $i++;
?>
$i = 0; // id checkbox
    $id = 0; // count for each checkbox for reach route  unique var     
    if ($this->gmaps) {
        foreach ($this->coords as $index => $value) {
            $num = count($value);
            $x = 0; // counter for the end of inner loop
            echo '<label class="checkbox">
             <input checked type="checkbox" id=' . $i . '
             data-route=';
            foreach ($value as $idroute) {
                if ($num - 1 != $x) {
                    echo 'Route' . $id . ',';
                } else {
                    echo 'Route' . $id;
                }
                $x++;
                $id++;
            }
            echo '  ';
            echo "onclick='isChecked(this);'> " . $index;
            echo "</label>";
            $i++;
        }
    function isChecked(checkbox) {
    //var Route = $(checkbox).data('route');
    var Route = $(checkbox).data('route').split(",");
    for (var i = 0; i < Route.length; i++) {
        if ($(checkbox).is(':checked') == true) {
            window[Route[i]].setMap(map);
        } else {
            window[Route[i]].setMap(null);
        }
    }
}