Reputation: 199
I used google maps with one marker for my rails app:
<script>
function initMap(lat, lng) {
var myCoords = new google.maps.LatLng(lat, lng);
var mapOptions = {
center: myCoords,
zoom: 14
};
var map = new google.maps.Map(document.getElementById('map'), mapOptions);
var marker = new google.maps.Marker({
position: myCoords,
map: map
});
}
</script>
<script>
$('#map').prepend(initMap(<%= @location.latitude %>, <%= @location.longitude %>));
</script>
But how can I transfer multiple markers to the map?
I tried so, but it does not work:
<% @locations.each do |location| %>
<script>
$('#map').prepend(initMap(<%= location.latitude %>, <%= location.longitude %>));
</script>
<% end %>
Then i create an array:
array = []
@locations.each do |location|
array.push([location.latitude, location.longitude])
end
Which looks like this:
[[50.0874654, 14.4212535], [49.4447888, 32.0587805], [49.42105565, 32.1004058189433]]
And try pass to js:
<script>
$('#map').prepend(initMap(<%= array %>));
</script>
But it also didn't work.
Upvotes: 1
Views: 5285
Reputation: 4539
You need to add an overloading function initMap that takes in array like below:
<script>
function initMap(lat, lng) {
var myCoords = new google.maps.LatLng(lat, lng);
var mapOptions = {
center: myCoords,
zoom: 14
};
var map = new google.maps.Map(document.getElementById('map'), mapOptions);
var marker = new google.maps.Marker({
position: myCoords,
map: map
});
}
function initMap(locationArr) {
for (var i = 0; i < locationArr.length; i++) {
var myCoords = new google.maps.LatLng(locationArr[i][0], locationArr[i][1]);
var mapOptions = {
center: myCoords,
zoom: 14
};
var map = new google.maps.Map(document.getElementById('map'), mapOptions);
var marker = new google.maps.Marker({
position: myCoords,
map: map
});
}
}
</script>
Upvotes: 2