Несколько простых шагов, чтобы получить эту работу:
Скачать
Скачать с https://github.com/dereuromark/cakephp-google-map-v3-helper и поместите файл GoogleMapV3Helper.php в /app/view/helper/GoogleMapV3Helper.php.
Load Helper
Либо измените AppController так, чтобы его верхняя часть читается как следующий:
<?php
class AppController extends Contoller{
public $helpers = array('Html','Javascript','GoogleMapV3');
}
?>
Или загрузить его в один контроллер, добавив его в массив хелперов как таковой :
<?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() вместо сценария(), если вы не хотите, чтобы повторить JavaScript сразу, но записать его в буфер для последующего вывода в макете:
<?php $this->GoogleMapV3->finalize(); ?>
Престола http://www.dereuromark.de/2010/12/21/googlemapsv3-cakephp-helper/ для деталей.
Я сделал, и все, что он делает, это добавить еще один экземпляр карты по умолчанию (ну, она пытается, но поскольку карта вызывается с использованием «id» вместо «class», она дает мне только одну карту ... что и есть Я хочу). – huzzah
Итак, у вас есть 'echo $ this-> GoogleMapV3-> script();' где-то на вашей странице? – swiecki
Я понял, что, когда у меня есть это, я получаю сообщение об ошибке из торта, говоря: «Метод GoogleMapV3Helper :: скрипт не существует», хотя он проделывает через него правильное количество раз! – huzzah