我目前被困了好幾天試圖完成這項作業。我找到了一個 Leaflet 插件,它可以根據坐標(Leaflet-Coordinate)的半徑過濾資料。我嘗試將坐標硬編碼到控制器中,并且效果很好。
我的問題是如何從我的 Leaflet 地圖中獲取當前坐標并將其用作控制器功能的變數?
這是我的主要地圖JS代碼:
var map = L.map('map', 15);
L.tileLayer('https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token={accessToken}', {
attribution: 'Map data © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, Imagery ? <a href="https://www.mapbox.com/">Mapbox</a>',
maxZoom: 17,
id: 'mapbox/streets-v11',
tileSize: 512,
zoomOffset: -1,
accessToken: 'pk.eyJ1IjoiZGFuaWVscmFjaGV2YXNraSIsImEiOiJjbDFlZzBpN2wwcjE1M2ZuNHF3NXRvbGh5In0.U44yx8ueWFpYviMcI1U1Sw'
}).addTo(map);
map.locate({setView: true});
map.on('locationfound', function(e) {
console.log(e.latlng.lat, e.latlng.lng);
var lat = e.latlng.lat;
var lng = e.latlng.lng;
//I want to take this coordinate to controller
})
這是控制器代碼:
public function mainpagebenef(){
//$lat = $request->get('lat');
//$lng = $request->get('lng');
$beneficiary = beneficiary::nearby([
1.4701624933456898, //latitude, this is supposed to be coords for current location in leaflet
110.42952010069433 //longitude, this is supposed to be coords for current location in leaflet
],0.5)->closest()
->where('status', '=', 'Mahu Bantuan')->get();
$donor = DB::table('donor')->get();
return view('mainpagebenef', ['beneficiary' => $beneficiary], ['donor' => $donor]);
}
這是路線:
Route::get('/mainpagebenef', 'mainpagecontroller@mainpagebenef')->name('mainpagebenef');
我嘗試了幾天并搜索了無數教程,但無濟于事。我對 Laravel 和整個傳單都很陌生,所以非常感謝任何幫助!
uj5u.com熱心網友回復:
您的 js 代碼應如下所示
map.on('locationfound', function(e) {
console.log(e.latlng.lat, e.latlng.lng);
var lat = e.latlng.lat;
var lng = e.latlng.lng;
axios.post('/myControllerPostMethod', {
latitude: lat,
longitude: lng
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
})
并且在您的控制器中應該是一個接受發布請求的方法
public function myControllerPostMethod(){
//$input = $request->all();
$lat = $request->input('latitude');
$lng = $request->input('longitud');
}
uj5u.com熱心網友回復:
您似乎正在通過 js 庫定位用戶或其他東西。該代碼在客戶端運行,但您需要服務器端的客戶端資料。一種可能的解決方案是使用 Axios 并使用您需要的那些資料向您的服務器發送請求。
在這里,您是如何輕松完成此操作的示例。首先你必須在 Laravel 中安裝 Axios,這非常簡單。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/488923.html
標籤:javascript 阿贾克斯 拉拉维尔 传单
上一篇:在Ajax中解壓json
