Google Map V3 Cakephp помощник и несколько маркеров - PullRequest
0 голосов
/ 10 января 2012

Я использую Cakephp Google Map V3 Helper.Я могу получить карту Google, чтобы показать, но маркеры нет.Вот мой код вида:

    <?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 Ответ

5 голосов
/ 10 января 2012

Пару простых шагов, чтобы заставить это работать:

Загрузите

Загрузите из 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/.

...