【问题标题】:return $map variable to a view from a controller ivory map laravel从控制器象牙映射 laravel 将 $map 变量返回到视图
【发布时间】:2017-11-21 16:26:54
【问题描述】:

我正在尝试在 laravel.using google api 的视图上查看 google-map, 我使用了 ivory-google-map https://github.com/egeloen/ivory-google-map/blob/master/doc/map.md

我设法在控制器中渲染地图。 我需要的是将此与其他一些数据一起返回到视图中。 这是我的控制器。

公共函数 create() {

    $map = new Map();
    $map->setAutoZoom(false);

    $map->setCenter(new Coordinate(7.322723, 79.988258));

    $map->setMapOption('zoom', 10);
    $map->setAutoZoom(false);
    $map->setStylesheetOption('width', 600);
    $map->setStylesheetOption('height', 600);
    $map->setStylesheetOption('position', 'absolute');


    $map->setBound(new Bound(new Coordinate(7, 70), new Coordinate(7.3235001, 79.988258)));
    $map->getOverlayManager()->addMarker(new Marker(new Coordinate(7.322723, 79.988258)));

    $scaleControl = new ScaleControl(
        ControlPosition::BOTTOM_RIGHT,
        ScaleControlStyle::DEFAULT_
    );


    $map->getControlManager()->setScaleControl($scaleControl);

    $mapHelper = MapHelperBuilder::create()->build();
    $apiHelper = ApiHelperBuilder::create()
        ->setKey('AIzaSyA7pPqtVUC-JWLM89E7Rko')
        ->build();

    $map->setHtmlId('map_canvas2');


   echo $apiHelper->render([$map]);
   echo  $apiHelper->render([$map]);



    $materials = Material::pluck('mat_name','mat_price');
    return view('order.create', compact('materials');
}

地图出现在视图中,连同数据 - 材料。但地图在页面顶部,我认为这是因为控制器中的回声。 我尝试使用

   return view('order.create', compact('materials')->with('maps',$map);

但还是没有运气。

我需要将此地图显示在单独的 div 上,而不是浏览器顶部。这会影响我的其他样式。

无论如何我可以做到这一点。 这是我的看法,

    <div class="row">
    <div class="col-md-6 col-md-offset-1 margin-tb align-center">
        <div class="pull-left">
            <h2>Place New Oder</h2>
        </div>
        <div class="pull-right">
            <a class="btn btn-primary" href="{{ route('order.index') }}"> Back</a>
        </div>
    </div>
    <div class="col-md-5  margin-tb align-center">
    <div id="map_canvas2">

    </div>

    </div>
    </div>

我希望它出现在#map_canvas2 上。任何人都可以提出答案

【问题讨论】:

  • 永远不要在控制器中使用echoprint
  • 我想你把你的 maps 键放在你的问题中,你可能想重新生成它。

标签: javascript php laravel laravel-5.4


【解决方案1】:

从您的控制器中删除两个echo

尝试将$apiHelper 传递给您的视图,然后:

<div id="map_canvas2">
    {{ $apiHelper->render([$maps]) }}
</div>

【讨论】:

  • ,我得到未定义的变量 $apiHelper。这是我从控制器返回的方式,.... return view('order.create', compact('materials')->with('apiHelper' ,$apiHelper);
  • 如果是这种情况,错误应该说 $maps 未定义但不是 $apiHelper 因为您将其传递给视图。通过$apiHelper$maps
  • 我才发现你的return view()错了,应该是view('order.create', compact('materials'))-&gt;with('apiHelper',$apiHelper)
【解决方案2】:

我找到了答案, 我将 apiHelper、mapHelper 都发送到视图,然后回显它们,它可以工作,

 return view('order.create', compact('materials'))
     ->with('apiHelper',$apiHelper)
     ->with('map',$map)
     ->with('mapHelper',$mapHelper);

感谢@Camilo 的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-06
    • 2018-01-06
    • 1970-01-01
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    • 2015-10-15
    • 2022-06-18
    相关资源
    最近更新 更多