OpenStreetMap Forum

The Free Wiki World Map

You are not logged in.

Announcement

A fix has been applied to the login system for the forums - if you have trouble logging in please contact support@openstreetmap.org with both your forum username and your OpenStreetMap username so we can make sure your accounts are properly linked.

#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: Помогите новичку разобраться с поиском

Зайдите на вики, там всё написано по пунктам! smile

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,425
Website

Re: Помогите новичку разобраться с поиском

http://wiki.openstreetmap.org/wiki/Nominatim#Parameters
Какой конкретно параметр непонятен?  smile

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: Помогите новичку разобраться с поиском

Artem Bolshakov wrote:

наример это
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: Я, кстати сейчас делаю как раз такую штуку с картой, снимками спутника, оверлеем поиском и т.д. которую можно будет встраивать в сайты несколькимим строчками wink Надеюсь поиск доделаю на этих выходных.

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

#15 2010-11-09 12:35:50

osmisto
Member
Registered: 2010-06-16
Posts: 633
Website

Re: Помогите новичку разобраться с поиском

А, курсовая, openlayers уже в обучении? Работу с маркерами видел в примерах. А вот треки не видел, интересно будет посмотреть :)

Last edited by osmisto (2010-11-09 12:47:10)

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: Помогите новичку разобраться с поиском

Artem Bolshakov wrote:

Ну что добавили поиск на свою карту? Хочется посмотреть как все таки пользоваться поиском)).

Скорее всего на выходных smile (можно на "ты")

Offline

#18 2010-11-11 12:18:57

Artem Bolshakov
Member
Registered: 2010-11-05
Posts: 15

Re: Помогите новичку разобраться с поиском

osmisto wrote:
Artem Bolshakov wrote:

Ну что добавили поиск на свою карту? Хочется посмотреть как все таки пользоваться поиском)).

Скорее всего на выходных smile (можно на "ты")


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: Помогите новичку разобраться с поиском

У меня редко получается сесть попрограммировать не по работе smile Зато вот что нашел: 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: Помогите новичку разобраться с поиском

Не надо smile Она у меня в тудушнике smile

Offline

#25 2010-12-20 08:21:25

Artem Bolshakov
Member
Registered: 2010-11-05
Posts: 15

Re: Помогите новичку разобраться с поиском

ну клево)).

Offline

Board footer

Powered by FluxBB