Клуб API Карт

Отображение точек на Яндекс картах 2.0 и 2.1 получая данные через json и объединяя в кластер

Пост в архиве.

Здравствуйте!

Написал статью на тему: Отображение точек на Яндекс картах 2.0 и 2.1 получая данные через json и объединяя в кластер

Думаю будет полезна начинающим или более-менее опытным разработчикам.

Статья с кодом и картинками: Отображение точек на Яндекс картах 2.0 и 2.1b

Жду конструктивную критику, если будет)

2 комментария

 

// Координаты
[json.markers[i].lat, json.markers[i].lon],


Надо приводить тип, иначе будет массив строк

 

Зачем делать myGeoObjects, myPlacemark и clusterer глобальными?

 

Зачем вообще создавать myPlacemark, если можно сразу делать push в массив

 

В ПэХаПэ лучше использовать спец методы для создания JSON, а не клеить его как строки, т.к. Это потенциальный источник ошибок. Тогда будут не нужны костыли типа $json = substr($json, 0, -1);

 

Почему файл с JSON сохраняется с расширением ".xml"?

 

Зачем нужна опцию syncAdd в кластеризаторе? ИЕ от нее будет "подвисать"

 

Опция gridSize должна быть кратна степени двойки, использовать значение 100 некорректно

 

Нужно приложить ссылку на итоговый пример, одного кода не достаточно

Спасибо! 

по: Зачем делать myGeoObjects, myPlacemark и clusterer глобальными? -  Долго искал как можно добавить точки по другому, но так и не нашел :(

Если подскажите как - буду очень благодарен!


По всем другим пунктам, все изменил, json формируется теперь так:

 while(list($sid, $catid, $uid, $title, $time, $hometext, $tipevak, $gruzevak, $status, $url, $tphone, $gps, $ecena1300, $ecena1500, $ebcena1500, $ecendzma, $ecenprost, $ecenbeze, $ecenpere, $ecenzakm) = $db->sql_fetchrow($result)) {

$gps = str_replace(", ", " ", $gps);

list($lat, $lng) = split('[ ]', $gps);

$stitlep = getgruzevak($gruzevak , "1").", ".gettipevak($tipevak , "1");

$info="".$stitlep."
Авто до 1,3 тн: ".$ecena1300."
Авто до 1,5 тн: ".$ecena1500."
Авто больше 1,5 тн: ".$ebcena1500."
Джип/МикроАвтобус: ".$ecendzma."
Простой: ".$ecenprost."
Без эвакуации: ".$ecenbeze."
Переадресация: ".$ecenpere."
";

$rows[] = array(

"id" => $nom,

"cname" => $title,

"tip" => $tipevak,

"lat" => $lat,

"lon" => $lng,

"phone" => $tphone,

"info" => $info);

$nom++;

}

 

$arrows = array(

"markers" => $rows,

"status" => "OK");

$json = json_encode($arrows);

 

Чуть позже обновлю статью и опишу все с учетом Ваших комментариев!

Сайт где это посмотреть в реале: http://gde-evakuator.com

 

Подсажите еще пожалуйста, если я указываю размер иконки iconImageSize: [30, 45], - то клик срабатывает только на половине иконки, как сделать чтоб работало по всей иконке?

Спасибо!