Векторная карта местности, как реализовать?

Wicked

Новичок
а как ты выводишь обычную картинку? вот эти картинки выводятся так же. Например:
<img src="generator.php?x=48&y=874&zoom=3&show[roads]&show[rivers]&..." />
 

DpoHro

Новичок
:) Так ведь вроде бы знаю, или ты имеешь ввиду написать нечто с тегом <img src="гы гы гы">

-~{}~ 10.07.06 11:30:

Понятно, ну звиняйте, я бы докапался, но как всегда хочется быстрее... :)
 

DpoHro

Новичок
Так можно и всь карту закешировать, на всех масштабах...
Кешировать предлагаешь для сеанса юзверя или как?
Просто у меня по центру карты (10% всей карты) можно смело все кешировать на всех масштабах, так как именно в центре народ будет смотреть ее больше всего...

-~{}~ 10.07.06 12:02:

Мда брежу конечно и понимаю что кешировать нужно ... Но каков должен быть механизм кеша?

-~{}~ 10.07.06 12:03:

Так чтобы и места много не занималось и в то же время по скорости был выигрыш...
 

bgm

&nbsp;
1. Кэшировать вообще, а не только для сеанса.
2. Кэшировать надо не область просмотра, а квант.
3. При внесении изменений в данные из кэша удалять соответствующие кванты.
4. Выделить в карте подложку, которую нужно кэшировать обязательно.
5. Завести для квантов счётчик обращений (в час, в день, в неделю, месяц...), и, в случае необходимости оптимизации, удалять изображения для тех, у кого этот счётчик меньше некого порогового значения. При этом счётчик сохраняется и изменяется при запросах конкретного кванта. И когда он перевалит порог - квант кэшируется.
 

DpoHro

Новичок
Так, я ранее проигнорировал твой пост про кванты, вернее его вторую часть... Поясни тогда что есть квант, подробнее...
 

bgm

&nbsp;

DpoHro

Новичок
Ок, но тем временем продолжается тема вывода картинки :)

Код:
header("Content-type: image/jpeg");

	$g_db->query("SELECT go.mpt_id, go.mpt_x, go.mpt_y, gs.mpd_sindex 
		FROM myost_map_dependence gs
		LEFT JOIN myost_map_points go ON (go.mpt_id = gs.mpd_ptid)
		WHERE (gs.mpd_objid=0)
		ORDER BY gs.mpd_sindex ASC
	");
	
	$OBJECT = $g_db->get_result();
	
	$width = 500;
	$height = 500;
	$img = ImageCreate($width, $height);
	if (!$img) die('&#202;&#224;&#240;&#242;&#224; &#237;&#229; &#236;&#238;&#230;&#229;&#242; &#225;&#251;&#242;&#252; &#241;&#238;&#231;&#228;&#224;&#237;&#224;');
	$bg = imagecolorallocate($img,255,255,255);
	$color = imagecolorallocate($img,255,0,0);

	imageline($img, 0, 0, 300, 300, $color);

	imagejpeg($img);
	imagedestroy($img);
Этот код пока что написан в модуле который будет отвечать за генерацию карты.
Тут покачто всего лишь одна линия отрисовывается, по крайней мере должна. Любое упоминание объекта $g_db - класс для работы с БД приводит к пустой картинке, ничего не отрисовывается возвращается белая картинка и та подозреваю в кеше. Однако, если вызвать модуль по абсолютному пути, создав экземпляр класса внутри него а не используя созданный гдето снаружи то все ок. Даж отрисовывается все :)
Что за ...? Не пойму.

-~{}~ 10.07.06 15:56:

Так все понятно, если вызывать
<img src="<? echo("./modules/map/map.php");?>">
То о какой области видимости может идти речь? С другой стороны данные то получались... Ничего не пойму... :(
 

bgm

&nbsp;
1. Если картинка возвращается, то попробуй посмотри её содержимое - может станет понятнее, что у тебя происходит.

2. Относительно "области видимости" вопрос совершенно непонятен.
 

DpoHro

Новичок
2. Это я сам себе задал вопрос ну и отчасти спросил у вас, то есть при таком вызове скрипта <img src="<? echo("./modules/map/map.php");?>"> он по идее вызывается из браузера пользователя.
Строка
<img src="<? echo("./modules/map/map.php");?>"> находится в модуле, допустим, main.php, то есть там где генерится дизайн и пр...
Тогда впринципе переменная объявленная в main.php не видна в модуле map.php...

Ладно, как бы показать что получилось... вобщем получилось, все объекты отрисовались, надо бы засечь сколько времени уходит на отрисовку 40 объектов состоящих из 5000 точек, но мне не заметно этого... Объектов будет конечно гораздо больше, не могу решить заморачиваться на кеширование или нет...

-~{}~ 10.07.06 16:39:

Хм... кстати давно ли в Оффтопике сидим? Ведь тред очень неплохой, и подобного нет на форуме, для реализации малых карт - идеальный мануал, не понимаю...
 

SiMM

Новичок
DpoHro, непосредственно к PHP твой вопрос никакого отношения не имеет.
 

DpoHro

Новичок
)) как бы там ни было, задача решена, спасибо всем кто принимал участие!!
 
Сверху