Карта города на Php

Тема в разделе "PHP программирование", создана пользователем neo2006, 9 авг 2006.

Статус темы:
Закрыта.
  1. neo2006

    neo2006 Гость

    Подскажите пожалуйста как сделать поиск по данной карте.Например я ввожу:пер,Учительский 5;и мне сразу показывает(обводит в какой-нибудь цвет) где это, с двойным увеличением(пример).Подскажите пожалуйста....
    [​IMG]
     
  2. admin

    admin Well-Known Member

    Регистрация:
    8 авг 2003
    Сообщения:
    2.811
    Симпатии:
    0
    Для: neo2006
    сделай на флеше, проще будет
     
  3. j_man

    j_man Гость

    Ну во-первых порежь всю карту на большие картинки (просто боюись, что карта целиком будет слишком большой) с перекрытием, т.е. чтобы один и тот же участок входил в две и более картинок (ну вообщем когда дойдешь до второй части поймешь как надо) :(

    Во-вторых тебе нужно будет создать карту в БД... т.е. в БД занести улицы и дома с координатами на этих картинках.
     
  4. neo2006

    neo2006 Гость

    Для: Серёга
    а как это реализовать во флеше?Подскажи пожалуйста.

    Просто дело в чем,мне на лето задали реализовать какой-нибудь проект.Я его придумал,и по первому времени думал он легкий и не уделял ему время,а потом сообразил,что ни фига он не легкий,а как делать не знаю.А к концу сентяюря он уже должен будет быть готов.Вот такое у меня горе,и чего делать не представляю просто.
     
  5. _serg_

    _serg_ Гость

    не надо на флеше - геморно будет
    вон с разрезанием хорошо подсказали
    если не понятно, что тот чел имел ввиду, то лучше придумать другой проект пока не поздно...
     
  6. Gisma

    Gisma Гость

    Разрезай карту и при поиске выдавай правильный участок с уже обведенным куском, либо создай малые варианты карты с уже обведенными участками, и при поиске накладывай на карту.
     
  7. j_man

    j_man Гость

    Тебя можно по разному понять... Вообщем не нужно резать все это на маленькие картинки или обводить участки и т.д. Имхо, правильней будет разрезать эту карту на большие картинки (как можно больше). Далее в базу занести координаты каждого из обьектов (улица, дом, остановка)... Причем кол-во коорданит скорее всего должно описывать многоугольник.
    Допустим юзер хочет найти улицу, ты лезешь в БД, достаешь оттуда координаты этой улицы, вычисляешь на какой большой картинки твоя улица находится полностью. Пока все просто... Далее пхп функциями вырезаешь прямоуольник нужных тебе размеров, содержащий твою улицу и создаешь картинку с нужным тебе маштабированием. :) (Ну это тоже не очень сложно). Ну а дальше эту картинку даешь юзеру :)
     
  8. Gisma

    Gisma Гость

    Для: j_man
    Да, согласен. Но момент с вырезкой многоугольника мне кажется несколько скользким. Мне кажется проще это сразу создать карту (картину) с обводками. И по запросу скрипта доставать нужные куски карты. Например там улица Васи Пупкина 23, в БД прописано, что нужно заменить 4 и 5 участок (допустим, всего 9) на новые заменяем эти участки и получаем нормальную карту. Вроде так и делается вообще.
    Надеюсь я ясно выразился...;) Утро какое-то тяжелое
     
  9. j_man

    j_man Гость

    Совершенно нескользкий )). Такой подход имеет некоторые плюсы перед тем что предлагаешь ты (бесконечную маштабируемость, до уровня разрешения всей карты)

    Но с тобой сложно не соглаиться... Ты действительно привел более легкий подход (думаю на гугле также сделано, судя по тому как оно работает ). Так действительно проще создать карту в БД. Но теряется качество карты (немного), т.е. двигаться можно будет только по квадратам (идеальный вариант, когда один квадрат совпадает в одним пикселом, но этой уже мой первый вариант, и моя реализации больше подходит)...

    Вообще я бы советовал делать так как Gisma описал... Если нужна помощь могу даже помочь. ;)
     
  10. neo2006

    neo2006 Гость

    Для: j_man
    Не мог бы ты расписать все по пунктам,как все это сделать.Потому что я ламо и мало что понимаю.Мне нужно с нуля.Буду очень сильно тебе благодарен. :(
     
  11. j_man

    j_man Гость


    Итак:

    1. Находишь карту города в виде одной большой картинки (уж не знаю где ее взять, можно в принципе склеить из кусков). Можно взять тот же СитиИнфо и наделать скриншотов одного района а потом их склеить в одну картинку.

    2. Далее разрезаешь эту большую картинку на квадратные картинки (ну или снала размечаешь). Ну и как-нибудь для себя их пронумеруй и сохранять их должен с соответствующими именами. Например обычным образом:

    11 12 13 14 ...
    21 22 23 24 ...
    31 32 33 34 ...
    ..................... (тут 12 картинок пронумеровано)

    3. Создаешь в базе таблицу вида:
    id - int(11) - уникальный идентификатор обьекта
    name - text - название обьекта. Например: "пр. Ф.Скорины", "пр. Ф.Скорины, 4", "резиденция"
    type - enum(street, bulding, administrative building, office ....) - ну вообщем понятно ;)
    startXY - varchar - наименование левого верхнего квадрата области
    finishXY - varchar - наименованиеправого ниженго квадрата области

    И заполняешь эту базу. Визуально определяешь какую область занимает твой обьект, т.е. если дом стоит на пересечении квадратов 22 и 23, то для него startXY = 22 и finishXY = 23. Если улица протянулась от 11 до 24, то так в базе и запишешь :).

    4. Базу заполнил.... Теперь нужно написать алгоритм генерации нужной картинки и вывода ее пользователю по запросу. Допустим он просто ищет улицу, ввел ее название ты простым запросом поискал обьект с таким название и соответствующим типом у себя в базе. Если нашел, то уже знаешь какие картинки тебе нужно выдать пользователю (ну и порядок их ты тое знаешь). Ах да, забыл... экран то не резиновый, весь проспект Ф.Скорины не покажешь в оригинальном качестве. Ну для этого придуманы функции работы с изображениями. Но тут вcе просто, когда дойдешь до этого момента, позвони мне, я расскажу, как это маштабирование сделать и ты справишься за пару часиков (каков бы уровень у тебя не был ;))

    Конечно же это всего лишь макет всего процесса. Его можно потом улучшить, но для начала не мешало бы реализовать вот такой вот начальный вариант.

    -----------------------------------------------
    Главное не сложность поставленной задачи, а энтузиазм, с которым к ней нужно подойти. ;)
     
  12. neo2006

    neo2006 Гость

    Это как делать,подскажи пожалуйста... :(
     
  13. j_man

    j_man Гость

Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей