在javascript中按日期将多段线分组
这件事我坚持了两天。我从文件中获取坐标,并使用多段线在地图上绘制它们。我有复选框来显示每条路线路线的日期,悬停时我会在地图上更改该路线的颜色。此外,在选中/取消选中时,还有一个显示/隐藏多段线的函数。我有5条多段线。其中3个在2014/10/17,2个在2014/10/16。 如何按日期对这些路线进行分组,当我取消选中日期2014/10/17时,2014/10/17上的多段线将消失 下面是一些代码: $this->gmaps将运行5次。所以我有5个变量Route1,Route2。。。 这些是复选框。在这里,我添加了数据routedate,因为我认为我必须向Route传递第二个参数。。。或者我不知道在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。。。 这些是复
$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);
}
}
}