• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы neo2006
  • Дата начала
Статус
Закрыто для дальнейших ответов.
N

neo2006

Подскажите пожалуйста как сделать поиск по данной карте.Например я ввожу:пер,Учительский 5;и мне сразу показывает(обводит в какой-нибудь цвет) где это, с двойным увеличением( ).Подскажите пожалуйста....
Untitled-1.gif
 
A

admin

Для: neo2006
сделай на флеше, проще будет
 
J

j_man

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

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

neo2006

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

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

_serg_

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

Gisma

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

j_man

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

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

Gisma

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

j_man

Но момент с вырезкой многоугольника мне кажется несколько скользким

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

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

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

neo2006

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

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е просто, когда дойдешь до этого момента, позвони мне, я расскажу, как это маштабирование сделать и ты справишься за пару часиков (каков бы уровень у тебя не был ;))

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

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

neo2006

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

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

j_man

Для: neo2006

Если ты собираешься MySQL использовать:



Если PostgreSQL:



Документацию по остальным серверам баз данных можешь сам найти ( ). :(
Осталось определиться выбрать что-нибудь одно.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!