You are not logged in.
- Topics: Active | Unanswered
Announcement
Please create new topics on the new site at community.openstreetmap.org. We expect the migration of data will take a few weeks, you can follow its progress here.***
#1 2010-11-05 07:23:48
- Artem Bolshakov
- Member
- Registered: 2010-11-05
- Posts: 15
Помогите новичку разобраться с поиском
Впервые столкнулся с OpenStreetMaps.
Нужно сделать небольшой сайт с использованием osm.Карты я подключил, а вот как сделать поск по карте - не понимаю.
Можете привести пример что нужно написать в коде, чтобы поиск был прямо с моего сайта, а не перебрасывал например на nominatim.
З.Ы. как и сказал - сталкиваюсь с этим впервые, так что можно поподробней...
Offline
#2 2010-11-05 07:42:34
- zverik
- Member
- From: Saint-Petersburg
- Registered: 2009-07-31
- Posts: 771
Re: Помогите новичку разобраться с поиском
Просто из яваскрипта делаешь XMLHttpRequest на http://nominatim.openstreetmap.org/search? с нужными параметрами, результат можно получать в xml или json. А затем говоришь OpenLayers переместиться в точку, ну или выводишь список.
Вот здесь есть примеры: http://wiki.openstreetmap.org/wiki/Nominatim
Offline
#3 2010-11-05 07:44:46
- Artem Bolshakov
- Member
- Registered: 2010-11-05
- Posts: 15
Re: Помогите новичку разобраться с поиском
а какие параметры нужно передавать?
Offline
#4 2010-11-05 07:46:50
- zverik
- Member
- From: Saint-Petersburg
- Registered: 2009-07-31
- Posts: 771
Re: Помогите новичку разобраться с поиском
Зайдите на вики, там всё написано по пунктам!
Offline
#5 2010-11-05 07:48:11
- Artem Bolshakov
- Member
- Registered: 2010-11-05
- Posts: 15
Re: Помогите новичку разобраться с поиском
хм там все по английски.А я в нем не очень((
Offline
#6 2010-11-05 07:51:23
- liosha
- Member
- From: Moscow
- Registered: 2008-03-04
- Posts: 8,447
- Website
Re: Помогите новичку разобраться с поиском
http://wiki.openstreetmap.org/wiki/Nominatim#Parameters
Какой конкретно параметр непонятен?
Offline
#7 2010-11-05 07:52:50
- Artem Bolshakov
- Member
- Registered: 2010-11-05
- Posts: 15
Re: Помогите новичку разобраться с поиском
наример это
json_callback=<string>
Wrap json output in a callback function (JSONP) i.e. <string>(<json>)
Offline
#8 2010-11-05 08:18:03
- zverik
- Member
- From: Saint-Petersburg
- Registered: 2009-07-31
- Posts: 771
Re: Помогите новичку разобраться с поиском
Если данные возвращаются в формате json, то с этим параметром они оборачиваются в функцию. Можно сделать eval(), или как там это в яваскрипте, на результат, и вызовется функция с результатом.
Offline
#9 2010-11-05 10:08:32
- osmisto
- Member
- Registered: 2010-06-16
- Posts: 633
- Website
Re: Помогите новичку разобраться с поиском
наример это
json_callback=<string>
Wrap json output in a callback function (JSONP) i.e. <string>(<json>)
Это, как я понял, опциональный параметр, специально сделан чтобы обойти защиту в браузере, которая мешает делать AJAX запросы на другие домены.
Т.е. если карта на сайте example.com, а поиск хочешь использовать на nominatim.openstreetmap.org, то простой ajax (XMLHttpRequest) уже может не прокатить. Зависит от настроек пользователя. Тут обычно делают простой прокси на своём example.com, который просто пробрасывает запросы на nominatim.openstreetmap.org или используют трюк с json_callback.
Для последнего надо сделать фукнцию, которая покажет результаты. Например showResults, а потом переделать функцию, которая запускает поиск (по кнопке "Найти"), чтобы она в конец документа добавляла тег <script> примерно так:
<script type='text/javascript' src='http://nominatim..../...?json_callback=showResults;..параметры поиска..'></script>
Браузер видит новый скрипт в документе и пытается его подгрузить. Делает запрос на сервер nominatim. Тот делает поиск и возвращает специально сформированный javascript, который вызовет showResults и передаст результат поиска в качестве параметров.
PS: Я, кстати сейчас делаю как раз такую штуку с картой, снимками спутника, оверлеем поиском и т.д. которую можно будет встраивать в сайты несколькимим строчками Надеюсь поиск доделаю на этих выходных.
Offline
#10 2010-11-05 10:41:00
- Artem Bolshakov
- Member
- Registered: 2010-11-05
- Posts: 15
Re: Помогите новичку разобраться с поиском
О.Спасибо огромное.Вроде попонятней стало)).
PS: вы когда поиск доделаете - киньте пожалуйста пример, если не сложно.
Last edited by Artem Bolshakov (2010-11-05 10:42:54)
Offline
#11 2010-11-07 15:23:43
- osmisto
- Member
- Registered: 2010-06-16
- Posts: 633
- Website
Re: Помогите новичку разобраться с поиском
Поиск через nominatim сделал :) Вот такой nominatim.js получился (чистый исходник).
Использовать примерно вот так: https://gist.github.com/666137 Там всё с комментариями, надеюсь понятно :) Опции, которые можно указывать в init и/или в search, перечислены в самом начале файла nominatim.js.
Внешне все запросы к серверу спрятаны вот в такой ассинхронный цикл, как в примере выше (callback -> next -> callback -> next ... ) Но внутри он всё же делает запросы к серверу. Как без этого. :) В каждом запросе получает не все результаты, а какую-то очередную часть. Размер части определяется параметром limit (по-умолчанию = 10).
Если, например, в первом запросе пришло 10 результатов, а нужно показать 15 (как в примере), то итератор, когда будет вызван iter.next() на 11-ый раз, скрыто запросит следующую партию и вызовет callback как-будто ничего не случилось :) Заметно будет только по паузе между вызовами: быстро значит уже есть очередной результат, долго -- подгружает.
А чтобы нельзя было войти в длинный цикл, если забыть поставить ограничение и всё время вызывать iter.next() из callback-а, то там есть параметр limit_total (по-умолчанию = 50). Т.е. после 50-го результата остальные подтягиваться не будут, и в callback придёт 'null', т.е конец поиска. Если limit_total поставить в 0, то скрипт может просто замучать сервер и IP будет забанен :)
Сегодня уже наверное не успею интегрировать в свою карту и показать в дейстии, так что отпишусь отдельно, когда заработает :)
Last edited by osmisto (2010-11-07 15:24:05)
Offline
#12 2010-11-07 16:29:44
- Artem Bolshakov
- Member
- Registered: 2010-11-05
- Posts: 15
Re: Помогите новичку разобраться с поиском
Ух ты.Огромная работа проделана)).
Offline
#13 2010-11-07 16:46:58
- osmisto
- Member
- Registered: 2010-06-16
- Posts: 633
- Website
Re: Помогите новичку разобраться с поиском
Смысл моего проекта -- сделать 99% работы по встраиванию openstreetmap + всего-всего-всего в сайт, чтобы можно было только сделать что-то вроде
<div id="osmbundle-map"></div>
<script type="text/javascript">
OSMTownBundle.init({
lat : 5696268.96925,
lon : 4262883.58356,
zoom : 16,
... other options ...
});
</script>
и сразу заработает osm, google, openstreetbugs, поиск, рисовалка, и что там еще можно придумать :)
Если это совпадает с твоей целью, то можем пилить вместе :)
Last edited by osmisto (2010-11-07 16:48:15)
Offline
#14 2010-11-08 06:19:54
- Artem Bolshakov
- Member
- Registered: 2010-11-05
- Posts: 15
Re: Помогите новичку разобраться с поиском
у меня цель просто сделать карту с поиском, добавлением маркеров из базы данных и отображением gps-треков.Да просто в универе дали задание, типа на курсовой, а я никогда раньше не встречался с этими картами.Поэтому все с нуля узнаю)).
Last edited by Artem Bolshakov (2010-11-08 06:21:14)
Offline
#16 2010-11-11 11:07:01
- Artem Bolshakov
- Member
- Registered: 2010-11-05
- Posts: 15
Re: Помогите новичку разобраться с поиском
Ну что добавили поиск на свою карту? Хочется посмотреть как все таки пользоваться поиском)).
Offline
#17 2010-11-11 11:09:08
- osmisto
- Member
- Registered: 2010-06-16
- Posts: 633
- Website
Re: Помогите новичку разобраться с поиском
Ну что добавили поиск на свою карту? Хочется посмотреть как все таки пользоваться поиском)).
Скорее всего на выходных (можно на "ты")
Offline
#18 2010-11-11 12:18:57
- Artem Bolshakov
- Member
- Registered: 2010-11-05
- Posts: 15
Re: Помогите новичку разобраться с поиском
Artem Bolshakov wrote:Ну что добавили поиск на свою карту? Хочется посмотреть как все таки пользоваться поиском)).
Скорее всего на выходных
(можно на "ты")
Ok)))
Жду с нетерпением.
Offline
#19 2010-11-18 04:25:49
- Artem Bolshakov
- Member
- Registered: 2010-11-05
- Posts: 15
Re: Помогите новичку разобраться с поиском
osmisto что то давно тебя уже небыло.Не пропадай))).
Offline
#20 2010-11-21 02:01:04
- osmisto
- Member
- Registered: 2010-06-16
- Posts: 633
- Website
Re: Помогите новичку разобраться с поиском
У меня редко получается сесть попрограммировать не по работе Зато вот что нашел: http://wiki.openstreetmap.org/wiki/Open … ck_example
Offline
#21 2010-11-21 04:48:10
- Artem Bolshakov
- Member
- Registered: 2010-11-05
- Posts: 15
Re: Помогите новичку разобраться с поиском
Это я тоже находил)).У меня основная проблема как раз с поиском.Все остальное вроде получается)).
Offline
#22 2010-12-08 17:28:17
- Artem Bolshakov
- Member
- Registered: 2010-11-05
- Posts: 15
Re: Помогите новичку разобраться с поиском
ух чета давно никто сюда не заходил.Ну как там успехи osmisto?
Offline
#23 2010-12-18 07:49:36
- Artem Bolshakov
- Member
- Registered: 2010-11-05
- Posts: 15
Re: Помогите новичку разобраться с поиском
апнуть тему чтоли...
Offline
#24 2010-12-18 11:23:53
- osmisto
- Member
- Registered: 2010-06-16
- Posts: 633
- Website
Re: Помогите новичку разобраться с поиском
Не надо Она у меня в тудушнике
Offline
#25 2010-12-20 08:21:25
- Artem Bolshakov
- Member
- Registered: 2010-11-05
- Posts: 15
Re: Помогите новичку разобраться с поиском
ну клево)).
Offline