![]() |
карта маршрутов
Подскажите, как можно создать карту маршрутов. если есть порядка 50 городов и нужно, чтобы при наведении на город маршрут подсвечивался, а при клике, оставался гореть и можно было бы выбрать другой город только из выбранного маршрута. уфф.. вроде понятно изложил :) типа как на этом сайте
|
Можно создать, например, заплатив $$$ флеш-разработчику.
|
Если данные не нужно брать из базы, то к каждому городу делаешь отдельный мувик, где спрятаны города назначения, при наведении они появляются, при нажатии остаются, а при нажатии на другой город, пропадают все кроме нажатого. Это просто и быстро, а если из базы получать данные - запарися, лучше правда заплатить флешеру:)
|
так я сам хочу научиться, чтобы потом мне все платили ;) :D мне сам принцип интересен. а ручками прописывать не особо весело, должен быть другой способ! :)
|
я думал в форуме помогают, а не свою рекламу делают! думаю админам надо о таких "комерсантах" позаботится!!! :(
|
все просто, теория графов + немного деревьев и решение задачи твое %)))
храни в базе координаты городов и пункты в которые можно из них улететь грузи из базы из список и все %)) все просто %))) нужно только немного в мат части разобраться %)) |
даже не пункты а ссылки на эти пункты (по ссылке ты можешь вытянуть всю инфу о пункте: название координаты.....) и твоя забота оптимизировать и придумать способы работы с твоим деревом
|
а можно немного поподробнее? а не спец во Flash'e...
|
хм...ну с этим вроде понятно... тогда по идее город можно будет даже из админки добавлять, а как с маршрутами? чтобы они подсвечивались вместе с городом и оставальсь после нажатия?
|
при нажатии подсвечиваешь все города в которые можно улететь а маршруты рисуешь динамически по координатам городов, при нажатии на видимый второй город, тушишь остальные, убираешь события к ним, стираешь все маршруты и рисуешь один нужный...
|
Если это реальная карта, а не кружочки соединенные прямыми линиями, то нужны координаты(точки), по которым будут строится кривые.
Можно конечно просто их нарисовать и не париться, но как например обсчитать пересечения, кратчайший путь и тд. Есть несколько подходов в построении маршрутов - один из них(как уже сказали) это графы. Вот ссылка на крты метро, где динамически считается кратчайшее расстояние между станциями. Поддержки сервера нет, поэтому высчитывание алгоритмов, даже в таких небольших маштабах, занимает на мой взгляд просто неприлично много времени. http://kvarta.ukrwest.net/subway/subway.swf Мне кажется, что если нужно что-то серьезное, то без внешней обработки данных, например на сервере просто не обойтись. Флеш не заточен под такие вычисления. |
у меня этого не требуется, у меня просто кружочки соединенние линиями :) хотел узнать, как если пришли какие-то данные, сделать button onMouseOver ??? т.е. если а=1, то button onMouseOver если нет, то просто button.
|
2KPaul, поиск кратчайшего пути на графе довольно ресурсоемкая задача, не важно на сервере это будет считаться или в самой флешке, это займет очень много времени если много соеденений, все зависит от алгоритмов и оптимизации которую ты спользуешь.
для примера, было как-то у моего знакомого ДЗ дана таблица букв 10х10 (100% есть все буквы алфавита), нужно было найти такой путь в этой таблице чтоб были выбраны все буквы алфавита и при этом ни одна из них не повторялась - на пне 233 (%)) ) думало это все ДЗ почти 2 часа %)). Причем он юзал правильные алгоритмы%)) 2 Shyroop читай хелп, пробуй не используй кнопки используй мувиклипы, для затравки Код:
var _mc=this.attachMovie('mc_linkage_name','mc',this.getNext.....); |
Видел я этот проект в разделе Работа. Похоже Заказчики нашли своего девелопера. :D
Стоимость работы, на которую ты ссылаешся, на мировом рынке флеш-разработок $500-800. Если бы ее мог сделать начинающий, то она бы стоила - $30. |
Цитата:
|
Здесь большая вероятность наличия go-betweens ( посредника или даже длинной цепи посредников ) которые рассуждают примерно так: "А вдруг какой-то олух сделает это за 30, а я потом всупоню заказчику за 500. Нормально - 3 таких операции за месяц и можно больше ни хрена не делать." Но блин, те кто берется делать это за 30 - обычно делают *****, которое конечный заказчик не принимает. В результате все остаются с носом.
|
да не партемь вы это все не то! я этой объявы даже не видел, только не согу понять, почему на этом форуме все так парятся из-за денег... даже если я и взялся за эту работу и задал вопрос в этом форуме что такого??? в пхп форумах народ просто помогает чем может и не парится скока денег за это должны заплатить или не говорят, что тебе это не позубам, брось это все, иди лучше пива попей... даже новичек понимает, что это работа не на 30 и не на 50 $. ладно, спасибо за помощь, я уже вроде придумал... конечно немного не то, что планировал, но вроде работает!:)
__i - а что этот скриптик дает? неуловил... |
Цитата:
Я ничего не говорю против тебя. Но, буду откровенен, не люблю кормить "go-betweens", не люблю когда кормят другие и работаю с ними очень жестко. Я не имею ввиду полезных и нужных посредников - людей разбивающих проекты на мелкие части, пишущих четкие спецификации, снимающих с разработчика бремя общения с заказчиком, умеющих уговорить заказчика отказаться от бредовых мыслей и т.п. ПХП - интересный продукт. У нас очень многие считают себя ПХП-кодерами, хотя их кодерство состоит только в умении "надергать" свободные исходники. Насколько мне известно, здесь это не катит - да тебе помогут, дадут идеи, выскажут свое мнение - но полную кодировку проекта ты будешь делать сам или за деньги. Я уволил с работы недавно такого "горе-пхп-кодера": вижу работающий аналогичный проект в нете, а он мне заявляет, что не может это сделать т.к. этого нет в библиотеках и в свободных исходниках. |
Сриптик дает тебе маленький пример, замени onRelease ,на onRollOver , посмотри расширь этот пример на толпу мувикой подумай и будет те счастье, или карта, смотря чего захочиться
|
Главная трудность начинающего -- невозможность расценить свои силы. "Объясните чуть-чуть подробнее..." -- и все. При этом человек не подозревает, что подробнее придется объяснять час-другой в лучшем случае.
|
а работы там не на много, если сильно не заморачиваться на прорисовку, то движек можно этак за день - два накидать%))
|
Цитата:
|
Цитата:
Теоретически ты можешь и сами города в базе держать с названиями... |
Цитата:
Кстате у меня такое подозрение что админка в примере сдалана именно в чистом НТМЛ (ПХП) без флеша %) |
Цитата:
так ты же ничем не помог :D на самом деле, с админкой я не заморачиваюсь, т.к. народ не захотел, а я предлагал. так что все будет до безобразия просто во Flash'e :) а если и будут изменения, то ручками их внести будет мах 5 мин |
Цитата:
Цитата:
|
ок, покажу, только еще не совсем готово! думаю завтра закончу!!! :)
|
Цитата:
и пережёвывать темы которые уже поднимались на форуме желание есть не у всех... |
Shyroop, в общем твоя задача состоит из трех основных частей:
1) построение карты городов на основании данных сервера (XML) 2) админ карты для добавления городов и маршрутов 3) подсветка маршрутов. пойдем по порядку: 1. построение карты городов на основании данных сервера (XML) тебе от сервера нужен XML вида: Код:
<map>остальное, думаю, понятно. после загрузки XML ты попросту бежишь по узлам типа: Код:
_root.xml_url = _root.xml_url.length ? _root.xml_url : 'map.php';в конструкторе класса копируешь атрибуты в мувик: Код:
var obj = this.in_xml.attributesзатем отображаешь имя: this.name_txt.htmlText = this.in_xml.firstChild.nodeValue и настраиваешь текст поле типа: this.name_txt.autoSize = true и всё такое. всё, все стоят по местам и отображены. организация подсветки проста: в том же конструкторе делаешь объект, который тебе укажет на наличие связи с городами: Код:
this.to_cities_obj = {}Код:
finction isCityConnected (city_id) {можно к другому как кому нравится, но в любом случае при клике вещаем событие и передаем в качестве параметра свой id и координаты: Код:
function onRelease () {Код:
function onShowLines (id, x, y) {2. админ карты для добавления городов и маршрутов я админ совмещаю с картой. т.е. это всегда один проект. карта это всегда заодно и админ. просто, чтобы карту показать в режиме админа, я использую передачу через flashvars переменной, например admin=true и далее проверяю if (_level0.admin=="true"){ // значиццо админский режим. } тут всё тоже очень просто: если админский режим, то при драге меняем координаты у города - мувика, например: Код:
function onPress () {(естественно, в админском режиме оно должно быть редактируемым) и при установлении связей добавляешь id города в массив to и присваиваешь его соответствующему атрибуту: this.in_xml.attributes.to = this.to.join(",") таким образом твой XML в админке всегда готов к отправке и записи на сервак. остальное, надеюсь разберешься. удачи, iv |
[offtop]нда... меня бы на работе прибили, если бы такой проект я делал больше 4х часов.[/offtop]
|
Цитата:
Одно замечание. Коорды городов в ХМЛ удобнее хранить в географическом формате ( долгота/широта ). Человечество не даром их придумало. Они дают универсальность. В этом случае быстро можно дописывать всякие дополнения: типа точных расстояний между городами и т.д. Код становится многоразовым - меняется карта: не проблема - привязал новую к гео-коордам и вопрос решен. Тогда и за 2 часа можно будет штамповать аналогичные проекты. |
Иван, спасибо, что разрулил, не пожалев 10-15 минут своего времени на писанину таких очевидностей.
|
vavilka, я не завидую твоему работодателю.
потому как любой вопрос должен быть решен максимально быстрым (дешевым) путем. твое предложение на ровном месте усложняет (удорожает) проект многократно. - перевод широты/долготы и обратно на текущую карту весчь далеко не очевидная и помимо чисто математических проблем потребует от дизайнера рисования точной раскладки катры. - точные расстояния никому не нужны. эти данные в реальной жизни не работают, потому как даже самолеты летают не по прямой, а по коридорам. а что делать, если: - карта очень условная и не очень вяжется с реалиями? - на ней есть врезки из других уголков земного шара, которые не попали в текущий участок? - широта и долгота неизвеснты до такой точности, например, на карте отделов магазина :) сколько таких "если" еще нужно? насыплю. для целей, тобой описаных юзаются таблицы. настоятельно рекомендовал бы очень серьезно подумать перед тем, как использовать реалии нашего мира в программировании :) |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
И еще, Чужое мнение мне всегда интересно. Спасибо. По моему твой код не поможет начинающему решить задачу. Молоразжевано. Хотя ...люди разные бывают. Так что он будет делать все равно по своему. |
vavilka, я про OOP, типизацию, паттерны проектирования и т.п. вообще молчу пока.
потому как во-первых уровень кодинга в ответе должен соответствовать уровню вопрошающего/вопроса, о котором, как правило, несложно догадаться. а во-вторых я и сам не ангел, часто предпочитаю не заморачиваться там, где это не требуется. Баннеру баннерово, ричу ричево (© Ivan Dembicki, 2006). Цитата:
Цитата:
Да и зачем? Тут важнее дать направление и, может, указать на некоторые приемы и особенности. А если что непонятно будет, так форум не закроется завтра, всегда спросить можно. удачи, iv |
Закрыто нахрен.
P.S. Дать им направление... их иногда лицом к двери поставишь и ключ дашь -- так и будут стоять... |
| Часовой пояс GMT +4, время: 10:18. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.