doubinchou4219 2014-08-11 12:49
浏览 97

Laravel和谷歌地图:foreach纬度/经度显示标记或地图

I have a table locations with a latitude and longitude field.

For each location I want a new map (or better a new marker) that uses the latitude and longitude from the table locations to display a city on the map.

index action of controller :

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 with marker :

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);

When I do this it only displays the city from the last inserted latitude/longitude :

@foreach($locations as $location)

   var location = new google.maps.LatLng({{ $location->location_latitude }}, {{ $location->location_longitude }});

@endforeach
  • 写回答

1条回答 默认 最新

  • duanpo2037 2014-08-11 13:41
    关注

    It is probably because while looping through the collection you are not actually creating separate marker.

    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
    
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)