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

huz*_*zah 0 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);
}
?>
Run Code Online (Sandbox Code Playgroud)

我知道,如果我只是告诉应用程序回显我的$ 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);
}
Run Code Online (Sandbox Code Playgroud)

我该怎么写得正确?

swi*_*cki 5

有两个简单的步骤来实现这一点:

下载

从下载https://github.com/dereuromark/cakephp-google-map-v3-helper并放置在/app/view/helper/GoogleMapV3Helper.php的GoogleMapV3Helper.php文件.

加载助手

修改appcontroller,使其顶部如下所示:

<?php   
    class AppController extends Contoller{
        public $helpers = array('Html','Javascript','GoogleMapV3');
    }   
?>
Run Code Online (Sandbox Code Playgroud)

或者通过将其添加到helpers数组中将其加载到单个控制器中:

<?php   
    class DemoController extends AppContoller{

        function map() {
            $this->helpers[] = 'GoogleMapV3';
            #   rest of your code       
        }
    }   
?
Run Code Online (Sandbox Code Playgroud)

包括脚本

在标题中包含Jquery.还包括以下内容:

<?php
    echo '<script type="text/javascript" src="'.$this->GoogleMapV3->apiUrl().'"></script>';
?>
Run Code Online (Sandbox Code Playgroud)

创建地图容器

将其放在您希望地图显示的视图中.随意修改div的属性.

<?php echo $this->GoogleMapV3->map(array('div'=>array('id'=>'my_map', 'height'=>'400', 'width'=>'100%'))); ?>
Run Code Online (Sandbox Code Playgroud)

注意:您可以通过包含更多选项而不仅仅是'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%'))); ?>
Run Code Online (Sandbox Code Playgroud)

添加标记

可以是循环或其他任何东西,但这是在创建容器后在视图中完成的.

<?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);
?>
Run Code Online (Sandbox Code Playgroud)

注意:如果要使用自定义图像,只需在数组中设置"icon"键.否则,他们将不会出现.

包括标记的脚本

<?php echo $this->GoogleMapV3->script() ?>
Run Code Online (Sandbox Code Playgroud)

全部完成!

或者,如果您不想立即回显javascript,可以使用finalize()而不是script(),但是将其写入缓冲区以便稍后在布局中输出:

<?php $this->GoogleMapV3->finalize(); ?>
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参见http://www.dereuromark.de/2010/12/21/googlemapsv3-cakephp-helper/.

  • 我无法更好地描述它;)我可能需要更新我以前的帖子... :) http://www.dereuromark.de/2010/12/21/googlemapsv3-cakephp-helper/ (2认同)