我正在为房地产开发一个网络应用程序,我想在列表页面上显示一个地图,上面有多个标记,显示同一区域的多个房屋/房产。我在yii2/php
这样做.我需要建议我该怎么做?我已经为每个家庭/物业添加了地图,
出于类似的目的,我使用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
),对于每个数组:
创建一个
LatLang
对象及其坐标:$coord = new LatLng(['lat' => $f->lat, 'lng' => $f->lng]);
创建新
Marker
:$marker = new Marker([ 'position' => $coord, 'title' => $lab['name_lab'], 'animation' => 'google.maps.Animation.DROP', 'visible'=>'true' ]);
使用设施的信息(名称、地址)创建一个
InfoWindow
并将其附加到Marker
(您可以在其内容中编写 html):$marker->attachInfoWindow(new InfoWindow(['content' => $f->address]))
将标记添加到
Map
:$map->addOverlay($marker);
最后,在循环之后,我们显示地图:
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();
有很多自定义选项,但这应该是帮助您入门的 enoguh。请检查模块的文档以及谷歌地图。