У меня есть место в таблице с широтой и долготой.
Для каждого местоположения я хочу новую карту (или лучше новый маркер), которая использует широту и долготу из местоположений таблицы, чтобы отобразить город на карте.
индексное действие контроллера:
public function index() { $locations = Location::all(); $locations->location_latitude = Input::get('location_latitude'); $locations->location_longitude = Input::get('location_longitude'); return View::make('forecasts.index') ->with('locations', $locations); }
google map с маркером:
function initialize() { var map_canvas = document.getElementById('map_canvas'); var location = new google.maps.LatLng({{ $location->location_latitude }}, {{ $location->location_longitude }}); var map_options = { center: location, zoom: 10, mapTypeId: google.maps.MapTypeId.ROADMAP } var map = new google.maps.Map(map_canvas, map_options) var marker = new google.maps.Marker({ position: location, map: map, }); marker.setMap(map); } google.maps.event.addDomListener(window, 'load', initialize);
Когда я это делаю, он отображает только город с последней вставленной широты / долготы:
@foreach($locations as $location) var location = new google.maps.LatLng({{ $location->location_latitude }}, {{ $location->location_longitude }}); @endforeach
Вероятно, это потому, что, проходя через коллекцию, вы фактически не создаете отдельный маркер.
function initialize() { var map_canvas = document.getElementById('map_canvas'); // Initialise the map var map_options = { center: location, zoom: 10, mapTypeId: google.maps.MapTypeId.ROADMAP } var map = new google.maps.Map(map_canvas, map_options) // Put all locations into array var locations = [ @foreach ($locations as $location) [ {{ $location->location_latitude }}, {{ $location->location_longitude }} ] @endforeach ]; for (i = 0; i < locations.length; i++) { var location = new google.maps.LatLng(locations[i][0], locations[i][1]); var marker = new google.maps.Marker({ position: location, map: map, }); } // marker.setMap(map); // Probably not necessary since you set the map above }