PDA

Просмотр полной версии : Отрисовка векторной карты города


seasergey
28.08.2008, 11:35
Подготовка:
Есть векторная карта города (cdr), с помощью VBA (for Corel) обходим все слои и элементы на них и заносим данные в тектовый файл в формате:
id=77164;layer=first;bkcolor=68,158,214;pencolor=;type=curve;coords=0.976,1270.20,112.921,1272.4345.....

Карта:
-серверный скрипт php, который парсит данные текстового файла и генерит xml
-flash который грузить xml сгенеренный php скриптом и отрисовывает с помощью moveTo,lineTo полигоны, полилинии,....

Все обсуждения, которые велись на данном форуме как привило были о уже готовых MovieClip-ах картах - созданных импортом во flash, отрисованных руками во flash, ... или таких же готовых но подгружаемых swf по слоям.

Вопрос: стоит ли так создавать карту динамически отрисовывая ее? как избежать тормозов при работе flash с данными и отрисовкой? как оптимально распределить чем занимается flash, а чем php?

Буду признателен любой информации по теме.

qazwsx
28.08.2008, 11:56
А что полигоны просто однотонные квадраты?:). Нужно ли тебе чтобы она была именно в векторах и зачем?
Самый производительный вориант это рисовать все в битмап и все... Если нет то нужно использовать к каждому полигону который ты будеш рисовать в мувиклип cacheAsBitmap. А вообще давольно расплывчито все понятно и многое не ясно что нужно. Вот если ты полоностью бы описал задачи, и конктретно расипсал вопросы, то дали бы на много больше советов, и притом намного больше делньых советов. :)

P.S Слоев нету...

seasergey
28.08.2008, 15:22
вот пример того что получается Карта амурской области из cdr файла (http://www.xserg.by.ru/)

данная карта - это пример, содержит небольшую часть объектов от того, что должно быть в карте города, всего 633 объекта. Интересен сам принцип подхода к данной задаче, оптимизация. В настоящий момент при попытке отрисовать карту города получаем огромное время ожидания завершения отрисовки, не рабочий вариант

chingachgoog
28.08.2008, 16:12
Вообще здорово!
У меня такие цифры высветились (GPRS):

Время загрузки xml: 65677 ms.
Время отрисовки: 1136 ms.
Всего MovieClip: 93

Вывод:
1) xml грузиться долго
2) строиться относительно долго

Первую проблему можно решить оптимизацией xml
Вторую - не знаю, как реализовано построение. Откуда там 93 мувика? Какие расчеты при построении кривых?

qazwsx
28.08.2008, 16:51
У меня 5 скунд построение было. Загрузка 34секунды 633 мувиклипа. Загрузка очень долгая. Отрисовка не особо долгая. Второй раз

Время загрузки xml: 1163 ms.
Время отрисовки: 6044 ms.
Всего MovieClip: 633

Либо это хост тупит. Либо ты очень сильно оптимизировал хмл за последние часы )). Но учитывая что это небольшая часть обьектов хотелось бы знать сколько их всего будет чтобы давать оценки какието.

seasergey
29.08.2008, 17:14
После переноса на нормальный хост и оптимизации xml получился приличный прирост скорости (в отдельных случаях в 5 и более раз).
Просмотр карт (http://www.portmurmansk.ru/upload/map/)

Но вопрос остался стоит ли далее идти по этому пути - векторной отрисовки карты? интересно мнение людей занимавшихся/ющихся картами во flash.

Есть еще одно направление по данной теме - это перенос функции отрисовки карты с клиента flash на сервер в php с использованием php_ming.dll, а на клиенте оставить лишь подзагрузку динамически сгенеренного swf файла. Но тут тоже могут быть грабли - ming вроде как больше не поддерживается его производителями, и возможно в php 6.X просто не быть данного расширения. Что посоветуете?

qazwsx
29.08.2008, 17:27
Флеш то карту нарисует без проблем. Другой вопрос какой размер карты будет конечный и на сколько на будет тормазить. Вот изходя из этого стоит думать о том чтобы рисовать все в битмап >_<

Strannic
02.09.2008, 09:44
Во тоже пытаюсь сделать что-то подобное. Долго конечно это все грузится. seasergey, а можно исходник для изучения попросить? я новичок во flash

seasergey
02.09.2008, 11:39
Исходник flash 8 (http://www.portmurmansk.ru/upload/map/map.rar)

†‡Paladin‡†
02.09.2008, 11:51
Гляньте в сторону SVG. У нас тут iv занимался рефакторингом парсера. Я думаю его возможностей с лихвой хватит для ваших нужд.

Strannic
02.09.2008, 15:47
seasergey, спасибо большое :)