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)
我该怎么写得正确?
有两个简单的步骤来实现这一点:
下载
从下载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/.
| 归档时间: |
|
| 查看次数: |
4180 次 |
| 最近记录: |