Javascript 防止在刷新地图时从图层中删除标记
我是乞丐,所以我有一个复杂的项目。 我有一个每10秒刷新一次的地图,还有一个按钮,为每个id生成坐标、时间和事件标记。 当我第一次按下该按钮时,为奇数id生成新数据,当我第二次按下该按钮时,为偶数id生成新数据 阿贾克斯: 控制器:Javascript 防止在刷新地图时从图层中删除标记,javascript,ajax,laravel,leaflet,layer,Javascript,Ajax,Laravel,Leaflet,Layer,我是乞丐,所以我有一个复杂的项目。 我有一个每10秒刷新一次的地图,还有一个按钮,为每个id生成坐标、时间和事件标记。 当我第一次按下该按钮时,为奇数id生成新数据,当我第二次按下该按钮时,为偶数id生成新数据 阿贾克斯: 控制器: public function update(Request $request) { $value =$request->id; $number=Device_new::get()->count(); //while i &
public function update(Request $request)
{
$value =$request->id;
$number=Device_new::get()->count();
//while i < broj zapisa u tabeli $device_new = Device_new::where('deviceId',1)->update(['x' => $x, 'y' => $y, 'datetime' => $datetime]); prvi put za neparne drugi put za poarne itd
if($value%2!=0)
$i=1;
else
$i=2;
for ($i; $i<=$broj; $i+=2){
$x = rand(44450000, 45000000) / 1000000;
$y = rand(16400000, 17900000) / 1000000;
$event=rand(1,4);
$datetime = new Carbon('now','Europe/Belgrade');
$device_new = Device_new::where('deviceId',$i)->update(['x' => $x, 'y' => $y, 'datetime' => $datetime, 'event' => $event]);
}
return $number;
}
正如您在callAjax中看到的,有命令markerLayer.clearLayers;移除带有标记的图层,并在循环结束时再次创建图层。这对我来说是个问题,因为它会刷新地图并再次写入新的和旧的标记
我是否可以阻止重写未更改的标记?您正在将每个新层添加到标记层和地图中。从markerLayer中清除图层不会从地图中清除图层。建议您不要将它们添加到地图中,因此请更改
marker.addTo(markerLayer).addTo(map);
到
已将markerLayer添加到地图中一次。在loadMap中,我有“markerLayer=L.featureGroup.addTomap;”,但我不认为这是解决我问题的方法。是否可以只重写更新的标记?
public function update(Request $request)
{
$value =$request->id;
$number=Device_new::get()->count();
//while i < broj zapisa u tabeli $device_new = Device_new::where('deviceId',1)->update(['x' => $x, 'y' => $y, 'datetime' => $datetime]); prvi put za neparne drugi put za poarne itd
if($value%2!=0)
$i=1;
else
$i=2;
for ($i; $i<=$broj; $i+=2){
$x = rand(44450000, 45000000) / 1000000;
$y = rand(16400000, 17900000) / 1000000;
$event=rand(1,4);
$datetime = new Carbon('now','Europe/Belgrade');
$device_new = Device_new::where('deviceId',$i)->update(['x' => $x, 'y' => $y, 'datetime' => $datetime, 'event' => $event]);
}
return $number;
}
marker.addTo(markerLayer).addTo(map);
marker.addTo(markerLayer);