Клуб API Карт

Проблема при получении координат (PHP)

tazododu
17 января 2011, 17:05

Всем привет!

Написал скрипт для получения координат фирмы при ее регистрации на сайте.

 $yandex_url = "http://geocode-maps.yandex.ru/1.x/?geocode=".urlencode("Украина ".$aFirmParam['city']." ".$aFirmParam['adr']).".&results=5&key=".$yandex_key;
$xml = file_get_contents($yandex_url);
$XML = simplexml_load_string($xml);
$coord = $XML->GeoObjectCollection->featureMember->GeoObject->Point->pos;
$coord = explode(" ", $coord[0]);
// сохраняю долгту и широту
$param['lng'] = trim($coord[0]);
$param['lat'] = trim($coord[1]);
// зум карты у меня для всех по умолчанию 14
$param['zoom'] = '14';

$param['is_check_map'] = 0;

$aFirmParam['geo'] = serialize($param);
$db->bUpdateQuery($aFirmParam, 'firms', 'idcompany='.$idcompany);

Запись у меня хранится в БД и при необходимости я ее извлекаю, ансериализирую и работаю с ней.

Все работает правильно, но уже дважды была следующая проблема:при добавлении фирмы в БД каким-то образом вместо обычной, нормальной строки

a:4:{s:3:"lng";s:9:"-3.695752";s:3:"lat";s:9:"40.418662";s:4:"zoom";s:2:"10";s:14:"is_map_checked";s:1:"1";}
попадает
s:19:"0341523412341234123";
Крутил-вертел и тестил по-всякому, все работает правильно, но переодически такая ошибка имеет место быть.

При каких параметрах города и адреса это происходит к сожалению отследить тоже не удалось.
Чем может быть вызвана эта бага?

p.s. что-то так и не разобрался как вставит правильно читабельно код

5 комментариев
Подписаться на комментарии к посту
Что-то у вас с кодом. АПИ тут не виновато. Либо где-то переменную переписываете, либо еще что-то не так идет как запланировано.

И кстати, приведенный пример сериализованного массива не совпадает с тем кодом, что вы привели. В коде ставится элемент массива с ключом is_check_map. А в сериализации это уже is_map_checked. Значит либо у вас где-то еще обработка ведется, либо код что вы привели не тот ;)
да! спасибо за замечание, у меня действительно при регистрации была переменая $param['is_check_map']
а при проверке, редактировании и сохранении положения фирмы на карте она переопределялась в is_map_checked.
бага не начто кроме вывода инфодива при подтверждении адреса не влияла, но всеравно спасибо, исправил.

и все же, описаная проблема все еще не решена...
Что бы решить проблему надо смотреть весь код.
Похоже что у вас где-то при срабатывании какого-то условия переменной $param присваивается строковое значение. Делайте поиск во всех исходниках по подстроке $param= и возможно наткнетесь на что-нибудь похожее.
Как обрабатываете "не найденный" адрес?  Например улица ОЛИАДЛВОИЛОВИПЛОВПИ ?
если не найден адрес либо город яндекс возвращает мне координаты центра Украины