Передача результатов из SQL в Google Maps API в CodeIgniter - PullRequest
0 голосов
/ 25 мая 2010

Я надеюсь использовать Google Maps на моем сайте.

Мои адреса хранятся в БД. Я открываю страницу, где вся информация динамична. Например: mysite.com/site/business/5 (где 5 - это идентификатор компании).

Допустим, я делаю такой запрос:

function addressForMap($id) {
$this->db->select('b.id, b.busaddress, b.buscity, b.buszip');
$this->db->from('business as b');
$this->db->where('b.id', $id);
$this->db->limit(1);

// добавляем лимит $ This-> db-> предел (1);

// get the results.. cha-ching
$q = $this->db->get();

// any results?
if($q->num_rows() !== 1)
{
    return FALSE;
}

return $q->row();

}

Как правильно вывести информацию в API Карт Google, чтобы она правильно отображала карту?

Интерфейс API принимает следующие результаты: $marker['address'] = 'Crescent Park, Palo Alto';.

Вот что у меня в контроллере:

$marker = array();
    $address = $this->Business_model->addressForMap($id); //Get result row
    $marker['address'] = $address->busaddress .' '.$address->buscity .', '. $address->buszip;

Ответы [ 3 ]

3 голосов
/ 25 мая 2010

МОДЕЛЬ

function addressForMap($id)
{
    $this->db->select('b.id, b.busaddress, b.buscity, b.buszip');
    $this->db->from('business as b');
    $this->db->where('b.id', $id);

    // add a limit
    $this->db->limit(1);

    // get the results.. cha-ching
    $q = $this->db->get();

    // any results?
    if($q->num_rows() !== 1)
    {
        return FALSE;
    }

    return $q->row();
}

КОНТРОЛЛЕР

function your_controller_method($id)
{
    $data = $this->Business_model->addressForMap($id);

    // did we get any results?
    if($data === FALSE)
    {
        show_error();
        return;
    }  

    $marker['address'] = $data->busaddress.' '.$data->buscity.', '.$data->buszip;
}

Убедитесь, что вы подтвердили, что $id является действительным числовым идентификатором. Это хорошая вещь, которую нужно сделать перед выполнением запроса .. ИМО.

РЕДАКТИРОВАТЬ # 2: см. Измененный код выше


РЕДАКТИРОВАТЬ # 1: из вашего комментария и изменений

У вас есть это:

return $this->db->get();

когда, основываясь на остальной части вашего кода, это должно быть так:

$query = $this->db->get();

Когда вы возвращаете объект запроса, переменной $address присваивается объект результата CI. Итак, в вашем контроллере вы должны сделать что-то вроде этого:

$address = $this->Business_model->addressForMap($id);

$row = $address->row();

$marker['address'] = $row->busaddress .' '.$row->buscity .', '. $row->buszip;

Тем не менее ... Я бы предложил изменить return на $query =, и вы можете оставить свой контроллер таким, какой он есть.

0 голосов
/ 25 мая 2010

Спасибо за использование моей библиотеки . Похоже, я разместил решение в своем блоге примерно в то же время, что и вы здесь: -P

Рад слышать, что вы все разобрались!

0 голосов
/ 25 мая 2010

Вот окончательный правильный код:

Для контроллера:

$address = $this->Business_model->addressForMap($id); //Get result row
        $config['apikey'] = 'google-api-key';
        $config['center_address'] =  $address->busaddress .', '. $address->buscity;
        $this->googlemaps->initialize($config);
        $marker = array();

        // $marker['address'] = $address->busaddress .' '.$address->buscity .', '. $address->buszip;
        $marker['address'] = $address->busaddress .', '. $address->buscity;
        $this->googlemaps->add_marker($marker);

        $data['map'] = $this->googlemaps->create_map();

        $data['address'] = $address->busaddress .', '.$address->buscity;

Для модели:

function addressForMap($id) {
    $this->db->select('b.id, b.busaddress, b.buscity, b.buszip');
    $this->db->from('business as b');
    $this->db->where('b.id', $id);
    $this->db->limit(1);
// add a limit
    $this->db->limit(1);

    // get the results.. cha-ching
    $q = $this->db->get();

    // any results?
    if($q->num_rows() !== 1)
    {
        return FALSE;
    }

    return $q->row();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...