首页 > 解决方案 > Laravel - 尝试根据用户 ID 显示谷歌地图

问题描述

在我的刀片中,我需要在地图上显示用户的位置。我在不同的刀片中使用相同的 js 函数。在我的另一个刀片(配置文件)中,地图工作正常,但在这里它进入 .fail()

用户控制器:

public function getMap(){
        $user = User::user();
        return json_encode($user);
    }

刀:

<div id="address-map-container" class="form-group row" style="width:100%;height:400px; ">
        <div style="width: 100%; height: 100%" id="map">
        </div>
    </div>
@endsection

@section('scripts')

 <script async defer src="https://maps.googleapis.com/maps/api/js?key=[MY_KEY]&libraries=places"></script>

    <script src="/js/circles.js"></script>
    <script>
    var site_url = window.location.pathname;
    var id = site_url.substring(site_url.lastIndexOf('/'));
    $(() =>{
        circleInitialize('getMap'+id)

    })
</script>
 @endsection

圈子.js:

$.ajaxSetup({
  headers: {
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  }
})
function circleInitialize(url) {
  $.ajax({
    dataType: "json",
    url: url,
    type: 'GET',
  })
    .done((data) => {
      var distance = data.distance*1000;
      var latitude = data.address_latitude;
      var longitude = data.address_longitude;
      var map = new google.maps.Map(document.getElementById('map'), {
        zoom: 12,
        center: {lat: latitude, lng: longitude},
        mapTypeId: 'roadmap'
      });
      var center = new google.maps.LatLng(latitude, longitude);
      var circle = new google.maps.Circle({
        center: center,
        map: map,
        radius: distance,
        fillColor: '#4CCC60',
        fillOpacity: 0.3,
        strokeColor: "#FFF",
        strokeWeight: 0
      });
    })
    .fail(() => {
      alert("error circle.js")    
    }) 
}

路线:

Route::get('getMap/{id}', 'UserController@getMap');

我收到错误 404 未找到

标签: ajaxlaravelgoogle-mapsmodel-view-controllerlaravel-routing

解决方案


您通过路由将用户 ID 传递给控制器​​。因此,您需要在控制器的方法中$id添加参数。getMap($id)然后你可以做$user = User::find($id)


推荐阅读