在好的地图标记中添加多个列表

时间:2017-05-12 11:53:09

标签: php google-maps yii2 google-maps-markers google-maps-api-2

我正在为房地产开发一个网络应用程序,我想在列表页面上显示一个地图,其中多个标记显示同一区域内的多个房屋/属性。我在yii2/php中这样做。我需要建议如何做到这一点?我已经为每个家庭/财产添加了地图,

1 个答案:

答案 0 :(得分:2)

出于类似目的,我使用2amigos/yii2-google-maps-library(在我看来,它不是房屋,而是某种“设施”)。

更新:我将为您提供每个步骤的具体代码示例。首先,您必须了解,要在地图中设置元素,您必须创建LatLang个对象。您可以创建一个简单指定其纬度和经度坐标(Google地图为您提供正确格式的那些),即:$coord = new LatLng(['lat' => 49.403916, 'lng' => 17.036116])

第一步是创建地图,为此必须提供它必须居中的位置。您还可以指定缩放级别,以及您可以在模块的文档中查看的其他一些内容:

$map = new Map([
    'center' => $coord,
    'zoom' => 4,
    'width' => '100%'
]);

一旦你了解地图,你就可以开始添加东西了。就我而言,我添加了工具(Facilty模型)。我存储它的坐标(纬度,经度),名称,地址等。然后,我循环遍历Facility ies(foreach $f in $facilities)的数组并为每一个:

  1. 使用其坐标创建LatLang对象:$coord = new LatLng(['lat' => $f->lat, 'lng' => $f->lng]);

  2. 创建新的Marker

    $marker = new Marker([
                    'position' => $coord,
                    'title' => $lab['name_lab'],
                    'animation' => 'google.maps.Animation.DROP',
                    'visible'=>'true'
                ]);
    
  3. 使用工具的信息(名称,地址)创建InfoWindow并将其附加到Marker(您可以在其内容中编写html):$marker->attachInfoWindow(new InfoWindow(['content' => $f->address]))

  4. 将标记添加到Map$map->addOverlay($marker);

  5. 最后,在循环之后,我们显示地图:

    echo $map->display();
    

    一个完整的例子:

    $coord = new LatLng(['lat' => 49.403916, 'lng' => 17.036116]);
    $map = new Map([
        'center' => $coord,
        'zoom' => 4,
        'width' => '100%'
    ]);
    
    foreach ($facilities as $f) {
        $coord = new LatLng(['lat' => $f->lat, 'lng' => $f->lng]);
        $marker = new Marker([
                    'position' => $coord,
                    'title' => $lab['name_lab'],
                    'animation' => 'google.maps.Animation.DROP',
                    'visible'=>'true'
                ]);
         $marker->attachInfoWindow(new InfoWindow(['content' => $f->address]));
         $map->addOverlay($marker);
    }    
    
    echo $map->display();
    

    有很多自定义选项,但这应该是让您入门的目标。请检查模块的文档以及Google地图。