2013-12-10 1 views
3

Я использую GoogleMapsHelper с CakePHP, чтобы включить Карту Google в мое приложение.CakePHP и GoogleMapsHelper: Как загрузить маркеры из моей БД?

Чтобы добавить маркер к моей карте, в документации указано, что я должен использовать следующий синтаксис, где три переменные - это идентификатор карты, идентификатор маркера и местоположение маркера.

<?= $this->GoogleMap->addMarker("map_canvas", 1, array('latitude' => 40.69847, 'longitude' => -73.9514)); ?> 

Имея это в виду, я пытался перебрать моей БД и показать все свои очки, но он ничего не делает: Вот код, где каждая запись имеет (лат) и (LNG).

<?php 
    foreach ($posts as $post): ?> 

     <?php $this->GoogleMap->addMarker("map_canvas", $post['Post']['id'], array('latitude' => $post['Post']['lat'], 'latitude' => $post['Post']['lng'])); ?> 

<?php endforeach; ?> 

Как загрузить эти записи в свою карту в качестве маркеров? Спасибо заранее!

+1

доведенную до более актуальной версии может быть [это] (http://www.dereuromark.de/2010/12/21/googlemapsv3-cakephp- помощник /) – mark

ответ

3

Вы просто забываете эхо маркер. Обратите внимание на короткий тег <?= в примере. Это короткий (и несколько уродливый) способ сделать <?php echo. Кроме того, нет необходимости открывать/закрывать теги PHP столько, сколько вы делаете. Его можно положить в один блок. Наконец, вы объявляете дублирующий ключ latitude в вашем массиве параметров, вероятно, вы имеете в виду longitude по виду имени вашего поля модели Post. Таким образом, все вместе взятые, это следует сделать трюк:

<?php 
foreach ($posts as $post): 
    echo $this->GoogleMap->addMarker(
     'map_canvas', 
     $post['Post']['id'], 
     array(
      'latitude' => $post['Post']['lat'], 
      'longitude' => $post['Post']['lng'] 
     ) 
    ); 
endforeach;