Пару простых шагов, чтобы заставить это работать:
Загрузите
Загрузите из https://github.com/dereuromark/cakephp-google-map-v3-helper и поместите файл GoogleMapV3Helper.php в / app/view/helper/GoogleMapV3Helper.php.
Load Helper
Либо измените свой контроллер приложений так, чтобы верхняя часть его читалась следующим образом:
<?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);
?>
примечание: только установить значок ''введите массив, если вы хотите использовать пользовательское изображение.В противном случае они не будут отображаться.
Включить скрипт для маркеров
<?php echo $this->GoogleMapV3->script() ?>
Все готово!
В качестве альтернативы, вы можете использовать finalize() вместо script (), если вы не хотите сразу выводить javascript, но записываете его в буфер для последующего вывода в вашем макете:
<?php $this->GoogleMapV3->finalize(); ?>
Подробнее см. http://www.dereuromark.de/2010/12/21/googlemapsv3-cakephp-helper/.