Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Карта города на PHP, поиск по карте при помощи скрипта 
:(
    Опции темы
neo2006
  Дата 9.8.2006, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 9.8.2006

Репутация: нет
Всего: нет



Подскажите пожалуйста как сделать поиск по данной карте.Например я ввожу:пер,Учительский 5;и мне сразу показывает(обводит в какой-нибудь цвет) где это, с двойным увеличением(пример).Подскажите пожалуйста....user posted image
PM MAIL   Вверх
szz
Дата 9.8.2006, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 8
Всего: 33



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

  Так вот, поиск происходит в базе, а не на картинке.


--------------------
PM   Вверх
Mal Hack
Дата 9.8.2006, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(szz @  9.8.2006,  22:53 Найти цитируемый пост)
Так карта изначально не в виде картинки хранится, а в базе данных координаты и названия со свойствами, векторами полигонами.
   А потом на основе данных динамически рисуется.

Не все так просто, да и по такому принципу работают полноценные ГИС.
В данном случае можно обойтись базой с названием объектов и координатами, куда ставить маркер.
PM ICQ   Вверх
neo2006
Дата 9.8.2006, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 9.8.2006

Репутация: нет
Всего: нет



Ребята,у меня эта карта в OCADе хранится,это я просто скрин сделал.
PM MAIL   Вверх
Mal Hack
Дата 9.8.2006, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



neo2006, возможна эта система позволяеь с ней работать, как с ГИС, надо бы инфу по ней глянуть.
PM ICQ   Вверх
neo2006
Дата 10.8.2006, 07:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 9.8.2006

Репутация: нет
Всего: нет



Mal Hack, в OCADе вся карта начерчена. Так что я думаю можно.
PM MAIL   Вверх
szz
Дата 10.8.2006, 07:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 8
Всего: 33



Начерчена, но хранятися ли как-то там названия всех мест? Можно ли их экспортировать в какой-нить CSV с координатами? А то колупать формат файлов OCAD как-то страшно (если это, конечно не XML какой-нибудь приятный)


--------------------
PM   Вверх
HalkaR
Дата 10.8.2006, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

Репутация: 2
Всего: 42



Вот такой вариант подойдет?

http://osnova-develop.ru/?page_id=127
PM MAIL   Вверх
neo2006
Дата 10.8.2006, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 9.8.2006

Репутация: нет
Всего: нет



HalkaR, да именно так.Не подскажешь как это реализовать?Буду премного благодарен.
PM MAIL   Вверх
HalkaR
Дата 11.8.2006, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

Репутация: 2
Всего: 42



Так. Описываю, как это сделал я.

Есть БОЛЬШОЕ изображение. В моем случае это примерно 2000*2000. Еще есть маленький вариант, который показывается пользователю при открытии страницы. Сссылка на изображение по умолчанию выглядит как map.php. Если map.php не получает параметров, то перенаправляет на маленькую карту.

При клике на меленькую карту ссылка на изображение меняется на map.php?x=234&y=234, где числа это координаты клика. map.php обрабатывает их и отсылает пользователю соответствующую часть изображения (реализованно на gd). 

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

<div id='1250' style='z-index:50;left:374.79388917659;top:280.94202898551;container:positioned; position:absolute;cursor: url(images/zoom.cur);display:none' onMouseOver='show(this);' onMouseOut='hide(this);' onclick='NewMap(374.79388917659, 280.94202898551);'>
<img id="1250_img" src="/dm_pics/43957b6ee58d8.gif" border=0>
</div>


При клике на маленбкое изображение JS пересчитывает координаты этих обьектов и если они не находятся на карте делает их невидимыми. Соответственно при повторном клике (возврате на полную карту) производится обратный персчет (точнее восстанавливались сохранненные данные).

В базе хранятся только координаты обьектов.

Вот такой вот яваскрипт там 
Код

var divs = document.getElementsByTagName('div');
var data = new Array(divs.length);
var data1 = new Array(divs.length);
var sX, sY;
function NewMap(x, y, isBigMap) {    
    if(x==0){x = event.x;}
    if(y==0){y = event.y;}
    document.getElementById('loading').style.display = "block";
    var map = document.getElementById('map');    
     if(map.src != "http://.../minmap.gif" && map.src != "http://.../minmap.gif" && isBigMap)
        {
            map.style.cursor='images/zoom.cur';
            for (i = 0; i < divs.length; i++) {
                if(document.getElementById(divs[i].id+'_desc') != null)
                {
                    divs[i].style.pixelLeft = data[i][0];
                    divs[i].style.pixelTop = data[i][1];
                    document.getElementById(divs[i].id+'_desc').style.pixelLeft = data[i][2];
                    document.getElementById(divs[i].id+'_desc').style.pixelTop = data[i][3];
                    divs[i].style.display = data[i][5];
                    
                    data1[i] = divs[i].style.display;
                    divs[i].style.display = "none";
                    divs[i].style.cursor='url(images/zoom.cur)';
                }
                else
                {
                    if(divs[i].id.substr(0,10)=="map_kompas")
                    {
                        divs[i].style.display = "none";
                    }                
                }
            }
            map.src="/map/minmap.gif";
        }
    else {    
        map.style.cursor='images/back.cur';
        //document.getElementById('info').innerHTML = '<img src="map/back.gif">';    
        if(x<350/1931*700){x=350/1931*700;}
        if(y<350/1931*700){y=350/1931*700;}
        if(x>700-350/1931*700){x=700-350/1931*700;}
        if(y>900-350/1931*700){y=900-350/1931*700;}
        sX = x;
        sY = y;
        if(!isBigMap)
        {
            for (i = 0; i < divs.length; i++) {
                if(document.getElementById(divs[i].id+'_desc') != null)
                {
                    divs[i].style.pixelLeft = data[i][0];
                    divs[i].style.pixelTop = data[i][1];
                    document.getElementById(divs[i].id+'_desc').style.pixelLeft = data[i][2];
                    document.getElementById(divs[i].id+'_desc').style.pixelTop = data[i][3];
                    divs[i].style.display = data[i][5];
                    
                    data1[i] = divs[i].style.display;
                    //divs[i].style.display = "none";
                    //divs[i].style.cursor='url(images/zoom.cur)';
                }                
            }
        }
        for (i = 0; i < divs.length; i++) {
            if(document.getElementById(divs[i].id+'_desc') != null)
            {
                data[i]    = new Array(5);
                data[i][0] = divs[i].style.pixelLeft;
                data[i][1] = divs[i].style.pixelTop;
                data[i][2] = document.getElementById(divs[i].id+'_desc').style.pixelLeft;
                data[i][3] = document.getElementById(divs[i].id+'_desc').style.pixelTop;
                data[i][5] = divs[i].style.display;
                divs[i].style.pixelLeft = 700/2 - (x - divs[i].style.pixelLeft - 10)/700*1931 - 10;
                divs[i].style.pixelTop = 700/2 - (y - divs[i].style.pixelTop - 15)/700*1931 - 15;
                document.getElementById(divs[i].id+'_desc').style.pixelLeft = divs[i].style.pixelLeft + 25;
                document.getElementById(divs[i].id+'_desc').style.pixelTop = divs[i].style.pixelTop - 35;                
                divs[i].style.display = "block";
                if(divs[i].style.pixelLeft < 0 || divs[i].style.pixelLeft > 700 || divs[i].style.pixelTop < 0 || divs[i].style.pixelTop > 700)
                {
                    divs[i].style.display = "none";                    
                }
                data1[i] = divs[i].style.display;
                divs[i].style.display = "none";
                divs[i].style.cursor='url(images/back.cur)';
            }
            else
            {
                if(divs[i].id.substr(0,10)=="map_kompas")
                {
                    divs[i].style.display = "block";
                }                
            }
        } 
        map.src="/map/map.php?x="+x+"&y="+y;
    }
}
function ShowObjects()
{
    for (i = 0; i < divs.length; i++) {
            if(document.getElementById(divs[i].id+'_desc') != null)
            {
                if(divs[i].style.display != null && data1[i] != null){divs[i].style.display = data1[i];}
            }
    }
}


Это сообщение отредактировал(а) HalkaR - 14.8.2006, 12:35
PM MAIL   Вверх
neo2006
Дата 11.8.2006, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 9.8.2006

Репутация: нет
Всего: нет



HalkaR, спасибо.Попробую сегодня разобраться.
PM MAIL   Вверх
neo2006
Дата 12.8.2006, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 9.8.2006

Репутация: нет
Всего: нет



HalkaR, а в чем это все реализовывать?Прогу не подскажешь?
PM MAIL   Вверх
HalkaR
Дата 13.8.2006, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

Репутация: 2
Всего: 42



neo2006, я это все руками писал.
PM MAIL   Вверх
neo2006
Дата 14.8.2006, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 9.8.2006

Репутация: нет
Всего: нет



HalkaR, это понимаю.Лучше где это все набирать?В каком-нибудь HTML-редакторе,Dreamweaver или Visual C#?Я ведь не знаю. smile 
PM MAIL   Вверх
HalkaR
Дата 14.8.2006, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

Репутация: 2
Всего: 42



neo2006, да без разницы - хоть в блокноте. Наверно в Dreamweaver будет удобнее, а разницы никакой.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0576 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.