谷歌地图V3 Cakephp助手和多个标记

时间:2012-01-09 20:56:52

标签: google-maps cakephp cakephp-2.0

我正在使用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);
}

如何正确写这个?

1 个答案:

答案 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/