Laravel 在传单中从数据库加载标记

Laravel 在传单中从数据库加载标记,laravel,leaflet,maps,laravel-blade,Laravel,Leaflet,Maps,Laravel Blade,在Laravel的view blade中,我从数据库中提取数据并制作了一个表 <table id="companies" class="table table-bordered"> <thead> <tr> <th>Companies</th> <th>Devices</th>

在Laravel的view blade中,我从数据库中提取数据并制作了一个表

<table id="companies" class="table table-bordered">
        <thead>
            <tr>
                <th>Companies</th>
                <th>Devices</th>
                <th>X</th>
                <th>Y</th>
                <th>Time</th>
                <th>Vehicles</th>
                <th>Drivers</th>
            </tr>
        </thead>
        </p>
        <tbody>
        @foreach ($satwork as $row)

            <tr>
                <td>{{ $row -> company_name}}</td>
                <td>{{ $row -> device_type}}</td>
                <td>{{ $row -> x}}</td>
                <td>{{ $row -> y}}</td>
                <td>{{ $row -> datetime}}</td>
                <td>{{ $row -> license_plate}}</td>
                <td>{{ $row -> driver_name}}</td>
            </tr>
            @endforeach
        </tbody>
    </table>

公司
装置
X
Y
时间
车辆
司机

@foreach($satwork作为$row) {{$row->company_name} {{$row->设备类型} {{$row->x} {{$row->y} {{$row->datetime} {{$row->车牌号} {{$row->driver_name} @endforeach
在传单中,我有一段代码,可以通过该表从数据库中提取数据,并将其显示在地图上

var koordinate = {!! json_encode($device->toArray()) !!};
    console.log(koordinate);

    for (var i=0; i < koordinate.length; i++) {
        if(koordinate[i].x && koordinate[i].y){
        var marker = L.marker([koordinate[i].x, koordinate[i].y])
        .bindPopup("Device: "+koordinate[i].device_type+'<br>' + "Time: "+koordinate[i].time)

        .addTo(map);
        }
    }
var koordinate={!!json_encode($device->toArray())!!};
控制台日志(协调);
对于(变量i=0;i“+”时间:+koordinate[i]。时间)
.addTo(地图);
}
}

我需要一种方法,如何拉所有的数据直接从数据库到传单,而不与查看刀片接触。这可能吗

要做到这一点,您可以使用javascript HTTP请求来创建一个返回所有数据的API

您可以使用Laravel的内置API功能,并在
routes/API.php
中创建一个新路由,返回所有数据,请注意,通过这种方式,其他人也可以获取此数据,这意味着您必须确保以某种方式保护您的数据

因为我总是在项目中使用JQuery,所以我使用JQuery
getJSON()
方法获取所有数据,然后使用javascript显示数据

也许像这样的办法行得通?(我还没有测试过这个):

var-mapboxTiles=L.tillelayer('https://{s}.tiles.mapbox.com/v3/examples.map-i87786ca/{z}/{x}/{y}.png'{
属性:“”
});
var map=L.map('map'))
.addLayer(mapboxTiles)
.setView([42.444508,-76.499491],12);
//这是新的
var promise=$.getJSON(“businesss.json”);
promise.then(函数(数据){
data.forEach(koordinate=>{
if(坐标[i].x&&k坐标[i].y){
var marker=L.marker([koordinate[i].x,koordinate[i].y])
.bindpoop(“设备:+koordinate[i]。设备类型+”
“+”时间:+koordinate[i]。时间)。addTo(映射); } }) });

源于

我以前使用过json,我可以从controller创建吗?在
路由/api.php
中,您可以创建一个新路由,就像在
路由/web.php
中一样,它返回一个响应。但是,您可以返回类似于
return Koordinate::all()
,其中Koordinate是您的模型类名,而不是返回视图。这将被转换成JSON格式。我找到了一些教程,在那里我必须制作参考资料。但我会尝试这两个例子
    var mapboxTiles = L.tileLayer('https://{s}.tiles.mapbox.com/v3/examples.map-i87786ca/{z}/{x}/{y}.png', {
        attribution: '<a href="http://www.mapbox.com/about/maps/" target="_blank">Terms &amp; Feedback</a>'
    });

    var map = L.map('map')
        .addLayer(mapboxTiles)
        .setView([42.444508, -76.499491], 12);

    // THIS IS NEW
    var promise = $.getJSON("businesses.json");
    promise.then(function(data) {
      data.forEach(koordinate => {
        if(koordinate[i].x && koordinate[i].y){
           var marker = L.marker([koordinate[i].x, koordinate[i].y])
             .bindPopup("Device: "+koordinate[i].device_type+'<br>' + "Time: "+koordinate[i].time).addTo(map);
        }
      })
    });