2017-03-24 16 views
-1

你好我正在谷歌地圖上工作,我有拉特,長形式的數據庫的集合,通過這些緯度,長我必須創建標記。無法循環通過JavaScript中的laravel集合

Laravel收藏:

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> 

這是創建僅單一標誌物如何通過所有循環緯度,經度在JavaScript,請指導我。

+1

谷歌搜索 「JavaScript的環」 將是一個良好的開端像閱讀[的forEach()](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach ) – GillesC

+0

@GillesC我更新了代碼使用for循環但ErrorException在Collection.php行1527: 屬性[拉特]不存在此收集實例,這是錯誤 – Savvy

回答

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

嗨親愛的Laravel和JavaScript是兩回事。 有多種方法可以使用。

  1. 您可以使用ajax獲取標記。
  2. 你可以這樣做var data = <?= var_dump($map) ?>;
  3. 還有一個軟件包可以讓開發人員將php變量注入到javaScript中。 "laracasts/utilities": "~2.0"
+0

2選項適用於我,謝謝哥們 – Savvy