我正在使用Cakephp Google Map V3 Helper。我可以让谷歌地图显示,但标记不显示。这是我的观看代码:
<?php
echo $this->GoogleMapV3->map();
foreach ($allcondos as $condo) {
$options = array(
'lat' => $condo['Unit']['lat'],
'lng' => $condo['Unit']['lon']
);
$this->GoogleMapV3->addMarker($options);
}
?>
我知道如果我只是告诉应用程序回显我的$ condo ['Unit'] ['lat']或['lon']它会在foreach循环中这样做(因此它会拉动我的数据) 。我不知道该怎么做是如何编写$ options数组的代码。我也试过这个:
foreach ($allcondos as $condo) {
$lat=$condo['Unit']['lat'];
$lon=$condo['Unit']['lon'];
$options = array(
'lat' => $lat,
'lng' => $lon
);
$this->GoogleMapV3->addMarker($options);
}
如何正确写这个?
答案 0 :(得分:5)
通过几个简单的步骤来实现这一目标:
下载强>
从https://github.com/dereuromark/cakephp-google-map-v3-helper下载并将GoogleMapV3Helper.php文件放在/app/view/helper/GoogleMapV3Helper.php中。
加载助手
修改appcontroller,使其顶部如下所示:
<?php
class AppController extends Contoller{
public $helpers = array('Html','Javascript','GoogleMapV3');
}
?>
或者通过将其添加到helpers数组中将其加载到单个控制器中:
<?php
class DemoController extends AppContoller{
function map() {
$this->helpers[] = 'GoogleMapV3';
# rest of your code
}
}
?
包含脚本
在标题中包含Jquery。还包括以下内容:
<?php
echo '<script type="text/javascript" src="'.$this->GoogleMapV3->apiUrl().'"></script>';
?>
创建地图容器
将其放在您希望地图显示的视图中。随意修改div的属性。
<?php echo $this->GoogleMapV3->map(array('div'=>array('id'=>'my_map', 'height'=>'400', 'width'=>'100%'))); ?>
注意:您可以通过包含更多选项而不仅仅是'div'来更改地图的默认位置:
<?php echo $this->GoogleMapV3->map(array('map'=>array(
'defaultLat' => 40, # only last fallback, use Configure::write('Google.lat', ...); to define own one
'defaultLng' => -74, # only last fallback, use Configure::write('Google.lng', ...); to define own one
'defaultZoom' => 5,
),'div'=>array('id'=>'my_map', 'height'=>'400', 'width'=>'100%'))); ?>
添加标记
可以是循环或其他任何东西,但这是在创建容器后在视图中完成的。
<?php
$options = array(
'lat'=>40.770272,
'lng'=>-73.974037,
'title' => 'Some title', # optional
'content' => '<b>HTML</b> Content for the Bubble/InfoWindow' # optional
);
$this->GoogleMapV3->addMarker($options);
?>
注意:如果要使用自定义图像,请仅在数组中设置“icon”键。否则,他们就不会出现。
包含标记的脚本
<?php echo $this->GoogleMapV3->script() ?>
全部完成!
或者,如果您不想立即回显javascript,可以使用finalize()而不是script(),但是将其写入缓冲区以便稍后在布局中输出:
<?php $this->GoogleMapV3->finalize(); ?>
有关详细信息,请参阅http://www.dereuromark.de/2010/12/21/googlemapsv3-cakephp-helper/。