无法循环浏览javascript中的laravel集合

时间:2017-03-24 13:04:19

标签: javascript laravel google-maps

你好我正在谷歌地图上工作,我有lat,长形式数据库的集合,通过这些lat,我必须创建标记。

Laravel Collection:

public function getMap()
{

    $map = Map::all();
    return view('view-map',
        compact('map'));

}

JavaScript代码:

    <script>

var data = {!!$map!!};
var i;
for (i = 0; i < data.length; i++) {


//var lat = {{$map->lat}};
//var lng = {{$map->lng}};
var lat = data[i]->lat;
var lng = data[i]->lng;

 var map = new google.maps.Map(document.getElementById('map-canvas'), {
    center:{
        lat: lat,
        lng: lng
    },
    zoom: 15
 });

  // Marker
  var marker = new google.maps.Marker({

  position:{
    lat: lat,
    lng: lng
  },
  map: map

  });
} // end for
</script>

这是创建只有单个标记如何循环遍历所有lat,javascript中的长,请指导我。

2 个答案:

答案 0 :(得分:1)

现在您正在创建新地图并替换每次迭代的当前地图。请尝试仅为每次迭代创建标记:

<script>

 var map = new google.maps.Map(document.getElementById('map-canvas'), {
    center:{
        lat: lat,
        lng: lng
    },
    zoom: 15
 });

var data = {!!$map!!};
var i;
for (i = 0; i < data.length; i++) {

  // Marker
  var lat = data[i]->lat;
  var lng = data[i]->lng;
  var marker = new google.maps.Marker({

    position:{
      lat: lat,
      lng: lng
    },
    map: map

  });

} // end for

</script>

答案 1 :(得分:1)

亲爱的Laravel和JavaScript是两回事。 您可以使用多种方法。

  1. 您可以使用ajax获取标记。
  2. 您可以var data = <?= var_dump($map) ?>;
  3. 还有一个可用的包,它只是让开发人员将php变量注入javaScript。 "laracasts/utilities": "~2.0"
相关问题