Google Maps и границы районов, улиц итд на карте

Добрый!

Что-то ни как не пойму, в целом даже …

Собственно задача:
web проект (php, mysql) итд
человек в поиск вбивает улицу и город, и на карте я ему её подсвечиваю (выделяю). Соответственно нужны границы улицы … полазив по инету итд, все сводится к тому что эти данные надо брать с openstreetmap
так-же подсвечивать административные районы города, выделить сам город итд

Нагрузка от пользователей ожидается существенная, → боремся за скорость всего этого дела.

Как мне решить эту задачу?
взять osm`ы по России например, загрузить в mysql и дальше с ними работать? или еще как …
примеры может есть …
или какой-то сервис, что-б с сервера запросить на основании запроса (город, район, улица) и получить координаты объекта? (кеширование ясное дело на стороне сервера);

Так-же … у меня есть по данным запрашиваем:

  • код окато запрашиваемого объекта (для улиц с этим сложно, но есть для городов и районов);
  • код из fias`а для всех типов объектов кроме “районов городов” (ага … вот такой чудный fias);
  • собственно текстовое название :]

вообщем, куда копать, как делать … примеры бы …

// смотрел еще в сторону wikimapia, но с этим там совсем туго - границы районов там не запросить вроде как :confused:

http://wiki.openstreetmap.org/wiki/Search_engines

http://wiki.openstreetmap.org/wiki/Overpass_API
http://www.overpass-api.de/query_form.html
http://overpass-turbo.eu/

Подошло http://wiki.openstreetmap.org/wiki/Nominatim
спасиб большое …

И еще вопрос возник забавный.
вот у меня есть координаты объекта lat&lng соответственно. Как бы мне определить попадает ли эти координаты в “границы района”, которые мне в виде полигона выданы?
мне б надо это сделать в php скрипте … ясно дело, что можно проверить попадает ли объект при выводе на карту (через google.bounds()), но все-же хотелось-бы в php скрипте это сделать

[offtopic]
А при чём тут гугл? Ни одного упоминания в тексте…
[/offtopic]

да очевидно же, что проект на гуглоапи.

ну проект использует google maps … и соответственно google api :slight_smile:

А что границы районов и геометрия улиц берётся из OpenStreetMap — так пользователю об этом знать не нужно.

Так и вижу изумлённых пользователей:
— чё за х…я, вот же улица, почему она не находится?
— это чё, вот у меня пустая карта, а улица нашлась О_о

Яндекс же рисовал пробки где нет улиц.

Да, это путь Яндекса: граф дорог (роутинг и пробки) - отдельно, картинка с картой - отдельно.

А вот для этого вам бы выбросить к чертям MySQL и воспользоваться PostGIS, там пространственные функции для этого и предназначены, ответ на ваш вопрос будет давать не просто “php-скрипт”, а SQL-запрос к БД.

А что, пространственные функции в MySQL настолько плохи?

Они, скажем так, довольно рудиментарны.

Это, возник доп вопрос …

попробовал тут построить … хмм …
вообщем вот запрос: http://nominatim.openstreetmap.org/search?q=%D1%83%D0%BB%D0%B8%D1%86%D0%B0%20%D0%91%D0%B5%D0%BB%D0%B8%D0%BD%D1%81%D0%BA%D0%BE%D0%B3%D0%BE,%20%D0%9D%D0%B8%D0%B6%D0%BD%D0%B8%D0%B9%20%D0%9D%D0%BE%D0%B2%D0%B3%D0%BE%D1%80%D0%BE%D0%B4&country=ru&format=xml&polygon_geojson=1&addressdetails=1&_=1418987171296

возвращает все норм … строю, и получаю вот такое http://i.lpx.pw/g/t/l/h/2531.jpg
тип координат учитываю, считаю что LineString = Polyline в гугл api
совершенно не понятно почему есть промежутки итд …

считаю что каждый “вернутый” place в ответе, это отдельная “линия/полгион” и между собой по сути они не связаны


собственно, мне-б хотелось иметь нормальную обводку улицы … по краям что-б на карте стояла итд … это вообще возможно?

готового решения для такого нет.

ну, мне тут только же координаты корректные нужны … как я понял их нету :confused:

Тебе я так понимаю что-то типа такого нужно:
Улица (JSON), Админграница (JSON)

Если да, могу расширить покрытие на РФ и выкладывать дампы на основе которых работает эта тулза, если возьмешь на себя частичную оплату хостинга

2olehz
в целом да … это какими средствами сделано?
в целом у меня есть сервера и мощьности что-бы это сделать … мне просто надо понимание чего где

Немного модифицированый imposm3 + постобробка SQL-запросами для того чтобы связать объекты друг с другом. Т.е. фактически то, что советовали выше: “выбросить к чертям MySQL и воспользоваться PostGIS”

я не понимаю, чем мне то поможет, если в osm возвращаются “кривые” координаты (не полные) …
мне поможет только если будут возвращаться правильные координаты …

Вообще, я вот что заметил …
рисую “Нижегородский район, Нижний Новгород”
запрос: http://nominatim.openstreetmap.org/search?q=%D0%9D%D0%B8%D0%B6%D0%B5%D0%B3%D0%BE%D1%80%D0%BE%D0%B4%D1%81%D0%BA%D0%B8%D0%B9%20%D1%80%D0%B0%D0%B9%D0%BE%D0%BD,%20%D0%9D%D0%B8%D0%B6%D0%BD%D0%B8%D0%B9%20%D0%9D%D0%BE%D0%B2%D0%B3%D0%BE%D1%80%D0%BE%D0%B4&country=ru&format=xml&polygon_geojson=1&addressdetails=1&_=1418987171296

получаю на выходе: http://i.lpx.pw/g/t/z/l/8916.jpg
я понимаю, что гипотетически “Зеленый город” можно как-то там отнести к Нижегородскому р-ну (хотя и сомневаюсь), но что за линия идет такая между р-ном и городом?

строю вообще границы города: http://nominatim.openstreetmap.org/search?q=%D0%9D%D0%B8%D0%B6%D0%BD%D0%B8%D0%B9%20%D0%9D%D0%BE%D0%B2%D0%B3%D0%BE%D1%80%D0%BE%D0%B4&country=ru&format=xml&polygon_geojson=1&addressdetails=1&_=1418987171296
получаю линию идующию снизу карты к границам города … откуда, почему … хз …

вообщем есть может какая-то возможно получать нормальные и корректные координаты? пусть будет не osm даже … что-то открытое главное и что-б по запросу (api) можно было получить координаты