печать нескольких разметок на карте Google с помощью CI - PullRequest
1 голос
/ 22 августа 2011

У меня есть последние сохраненные в моей БД. Я хочу разместить разметку в этих местах. Но моя разметка появляется только на том языке, который я определил в файле карты Google (сохраненном в библиотеке). Когда я повторяю выбранную строку на странице просмотра, она показывает только 1-й сохраненный интервал, и разметка не появляется в этом месте.

Контроллер

function index()
{
    $this->googlemaps->initialize();
    $marker = array();
    $this->main_model->get_map();

    $marker['position '] = $this->main_model->get_map();
    $data['r'] = $marker['position '];
    $this->googlemaps->add_marker($marker);
    $data['map'] = $this->googlemaps->create_map();

    $this->load->view('main_view',$data);
}

Модель

public function get_map()
{
    $this->db->select ('lat,lng');
    $sql = $this->db->get('info');
    if ($sql->num_rows () >0)
    {
        foreach($sql->result() as $row) {
        $data[] = $row;
    }
    return $data;
}

View

<? foreach($r as $row): ?>
    <?echo $r[0]->lat; ?>
    <?php echo $map['html']; ?>
<?php endforeach; ?>

1 Ответ

3 голосов
/ 23 августа 2011

Похоже, вы используете мою CodeIgniter Google Maps Library .Проблема, с которой вы сталкиваетесь, заключается в том, в каком порядке вы выполняете действия. Попробуйте сделать что-то вроде этого: (не проверено)

Контроллер:

function index() {

    // initialize the map
    $this->googlemaps->initialize();

    // get the markers, loop through the markers and add them to the map
    $infoMarkers = $this->main_model->get_map();
    foreach ($infoMarkers as $infoMarker) {
        $marker = array();
        $marker['position'] = $infoMarker->lat.",".$infoMarker->lng;
        $this->googlemaps->add_marker($marker);
    }

    // create the map with added markers
    $data['map'] = $this->googlemaps->create_map();

    // load your view
    $this->load->view('main_view',$data);

}

Модель:

public function get_map()
{

    $data = array();

    $this->db->select ('lat,lng');
    $sql = $this->db->get('info');
    if ($sql->num_rows () >0)
    {
        foreach($sql->result() as $row) {
            $data[] = $row;
        }
    }
    return $data;
}

Просмотр:

<html>
<head>
    <?php echo $map['js']; ?>
</head>
<body>
    <?php echo $map['html']; ?>
</body>
</html>

Обратите внимание на то, как широта / долгота циклически проходит в контроллере.Для каждой итерации мы вызываем функцию add_marker для добавления каждого отдельного маркера.

Надеюсь, это поможет! Посмотрите демоверсии , так как они могут помочь разобраться:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...