OpenStreetMap Forum

The Free Wiki World Map

You are not logged in.

#1 2009-02-13 13:27:07

Lena44
Member
Registered: 2009-02-13
Posts: 19

Cтатические карты

Здравствуйте!
Я делаю приложения для мобильных телефонов. Для генерации фрагментов карт в форме картинок я использую статические карты Google: http://code.google.com/intl/ru/apis/map … taticmaps/
Есть ли такая возможность у сервиса OpenStreetMap?
Спасибо.

Offline

#2 2009-02-13 14:16:14

vvoovv
Moderator
Registered: 2008-03-04
Posts: 2,256

Re: Cтатические карты

На www.openstreetmap.org есть закладка Export. Там можно задать область и получить карту для этой области.
Я рекомендовал бы поизучать.
URL имеет такой вид:
http://tile.openstreetmap.org/cgi-bin/e … format=png

Offline

#3 2009-02-13 14:32:23

Lena44
Member
Registered: 2009-02-13
Posts: 19

Re: Cтатические карты

Получается у OpenStreetMap нет того сервиса, что мне нужен...
Для Googla не надо ничего вырезать...
Google сам вырезает, любой фрагмент карты мира.
Я просто передаю ссылку для img:
http://maps.google.com/staticmap?center … pe=mobile\
&markers=40.702147,-74.015794,blues%7C40.711614,-74.012318,greeng%7C40.718217,-73.998284,redc\
&key=MAPS_API_KEY

Вместо цифр 40.714728,-73.998672 перед формированием URL я вставляю цифры динамически полученные из моей базы данных и все.

Выглядит примерно так:

//IWEditWAP2->Text и IWEditWAP2->Text это широта и долгата полученные из базы данных
AnsiString way = "http://maps.google.com/staticmap?center=" +IWEditWAP2->Text+" ," +
 IWEditWAP1->Text + "&zoom=12&size=400x400&markers=" + IWEditWAP2->Text+ "," +
 IWEditWAP1->Text + ",reds&maptype=mobile" + keys;
 IWImageFileWAP1->ImageFile->URL = way; //грузим картинку

Это удобно и просто, ведь заранее не известно на каком фрагменте карты мира находятся координаты. Это координаты автомобилей, которые ездят по миру. Как видно Google сам все делает, плюс есть возможность поставить маркер на карте.

Last edited by Lena44 (2009-02-13 14:33:40)

Offline

#4 2009-02-13 14:37:43

vvoovv
Moderator
Registered: 2008-03-04
Posts: 2,256

Re: Cтатические карты

vvoovv wrote:

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

Offline

#5 2009-02-13 17:04:20

Lena44
Member
Registered: 2009-02-13
Posts: 19

Re: Cтатические карты

vvoovv wrote:
vvoovv wrote:

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

Я посмотрела. Там фрагмент карты в формате PNG предлагается сохранить. Я не совсем понимаю как Export может мне помочь.
Вот есть 10 автомобилей. Их координаты присылают спец.устройства установленные на автомобилях. Допустим автомобилей 10. Сегодня один в Германии, другой в России и т.д. Завтра они в другом месте... Мне что постоянно подготавливать фрагменты карты самой через Export?
Извините, но можно поподробнее, а то я не понимаю.:cool:
У Google все мне понятно - просто формирую ссылку...
Мне нужны статические фрагменты карты в проивольный момент времени в произвольной точке мира и чтобы я сама эти фрагменты не создовала, ну как у Google.:)

Offline

#6 2009-02-13 17:22:40

Lena44
Member
Registered: 2009-02-13
Posts: 19

Re: Cтатические карты

Да и самое гланое, я так понимаю, нет возможности добавить маркер на карту как у Google?
Маркер важен т.к. показвает местоположение авто, а это главное.
Мне OpenStreetMap нужен т.к. у Google, например, карта Украины без подробностей...

Offline

#7 2009-02-13 17:30:45

wildMan
Member
From: Minsk
Registered: 2008-03-05
Posts: 509

Re: Cтатические карты

http://cloudmade.com/
в частности http://developers.cloudmade.com/projects/show/tiles и остальное на http://developers.cloudmade.com/projects

основная команда разработчиков обитает в Киеве


--
OSMF BY Team

Offline

#8 2009-02-13 17:35:48

Lena44
Member
Registered: 2009-02-13
Posts: 19

Re: Cтатические карты

Большое спасибо за ссылки!
Буду копаться.:)

Offline

#9 2009-02-13 17:50:53

vvoovv
Moderator
Registered: 2008-03-04
Posts: 2,256

Re: Cтатические карты

Лена, посмотрим еще раз внимательно на ссылку, которую я выше привел
ссылка tile.openstreetmap.org/cgi-bin/export?bbox=37.6082,55.7433,37.6429,55.7598&scale=27500&format=png
После bbox указываешь границы нужной области, после scale - нужный масштаб
Картинка приходит как "вложение", т.е. открывается окно для сохранения.
Установи, например свой веб-сервер, который скачивает картинку с openstreetmap.org, а пользователю передает в обычном виде, не делая его вложением.

Прямой возможности вставить маркер нет. Но можно самому реализовать такую возможность самостоятельно

Last edited by vvoovv (2009-02-13 17:51:21)

Offline

#10 2009-02-13 18:09:37

Lena44
Member
Registered: 2009-02-13
Posts: 19

Re: Cтатические карты

Все равно, не доходит.:)
Вот есть авмтомбиль и у меня в базе прибор прислал его широту и долготу (для маркера).
Как используя эту информацию расчитать границы области?
Я например хочу, чтобы карта всегда была размером 400 на 400 пикселей, а в центре ее автомобиль с его широтой и долготой из базы данных.
Получается так?:
1. Придумать чтобы область всегда была 400 на 400.
2. Придумать на сервере логику для скачивания картинки с openstreetmap.org с нужной областью 400 на 400.
3. Отправить ее пользователю в обычном виде.
4. Придумать как поставить маркер.
Сложновато.:)

Offline

#11 2009-02-13 18:25:39

vvoovv
Moderator
Registered: 2008-03-04
Posts: 2,256

Re: Cтатические карты

Лена - задачи сформулировала правильно smile
Формула для пересчета из координат в пиксели и обратно есть в коде javascript-библиотеке OpenLayes.

Альтернативу wildMan уже упомянул - Cloudmade. Все-таки это коммерческая организация. А OpenStreetMap - некоммерческая

Offline

#12 2009-02-13 18:27:45

wildMan
Member
From: Minsk
Registered: 2008-03-05
Posts: 509

Re: Cтатические карты

так врядли получится. помоему тайлы всегда размером 256x256. но на разных zoom они охватывают разную площадь
надо:
1. получить тайл на который попадает точка-маркер ( формула http://developers.cloudmade.com/project … examples/2 )
2. скачать тайл
3. скачать например 8 соседних тайлов
соответственно получим кусочек 3x3 тайла (768x768 px) приблизительно в центре которого будет точка полученная от авто
из него уже можно вырезать 400x400 если надо


--
OSMF BY Team

Offline

#13 2009-02-13 18:30:06

wildMan
Member
From: Minsk
Registered: 2008-03-05
Posts: 509

Re: Cтатические карты

vvoovv, Cloudmade создали создатели OSM. большая часть сервисов предоставляемая ими - свободна
если заметили то mapnik теперь рендерит не раз в неделю а гораздо оперативней (иногда за полчаса-час) - это тоже заслуга Cloudmade.


--
OSMF BY Team

Offline

#14 2009-02-13 18:44:44

vvoovv
Moderator
Registered: 2008-03-04
Posts: 2,256

Re: Cтатические карты

wildMan wrote:

так врядли получится. помоему тайлы всегда размером 256x256. но на разных zoom они охватывают разную площадь

Ссылка которую я привел рисует не тайл 256x256, а произвольную область. Например размер области по ссылке http://tile.openstreetmap.org/cgi-bin/e … format=png 501x423 пикселя

Говоря, что Cloudmade - коммерческая компания, я имел ввиду, что там разработчикам платят деньги за работу. А в Openstreetmap любой участник имеет полное право в любой момент прекратить работу.

Last edited by vvoovv (2009-02-13 18:47:15)

Offline

#15 2009-02-16 12:32:42

Lena44
Member
Registered: 2009-02-13
Posts: 19

Re: Cтатические карты

Всем большое спасибо:)
1.Прежде чем пробывать с титлами (я уже согласна и на размер 256 на 256), меня бы уже очень устроила просто такая ссылка на моей странице:
http://www.openstreetmap.org/export/emb … 2,30.48855
тут и маркер готовый. Цифры я бы программно добавляла.
Только размер карты конечно не подходит.
Подскажите, пожалуйста, формулу как правильно посчитать bbox имея координаты маркера, я что-то не нахожу.:(
Хочу чтобы карта была по размеру шириной и высотой примерно как инструмент Zoom по этой ссылке...

2.Второй путь это конечно так: http://developers.cloudmade.com/project … examples/2
но там придется программно маркер добовлять и мне придется тот код переписывать на С++.

Мне первый вариант хочется реализовать. Я так поняла, что в этом варианте загвоздка только в расчете bbox.

Offline

#16 2009-02-16 12:52:31

liosha
Member
From: Moscow
Registered: 2008-03-04
Posts: 8,447
Website

Re: Cтатические карты

bbox = minlon,minlat,maxlon,maxlat

Offline

#17 2009-02-16 12:56:13

wildMan
Member
From: Minsk
Registered: 2008-03-05
Posts: 509

Re: Cтатические карты

josm считает так:

double size = 180.0 / Math.pow(2, ZOOM); 
b = new Bounds( new LatLon(LAT - size/2, LON - size), new LatLon(LAT + size/2, LON + size) );

как я понимаю пишите на javame ?
если так то есть http://developers.cloudmade.com/projects/show/j2me-lib

Last edited by wildMan (2009-02-16 12:59:07)


--
OSMF BY Team

Offline

#18 2009-02-16 13:13:37

Lena44
Member
Registered: 2009-02-13
Posts: 19

Re: Cтатические карты

wildMan wrote:

josm считает так:

double size = 180.0 / Math.pow(2, ZOOM); 
b = new Bounds( new LatLon(LAT - size/2, LON - size), new LatLon(LAT + size/2, LON + size) );

как я понимаю пишите на javame ?
если так то есть http://developers.cloudmade.com/projects/show/j2me-lib

Нет пишу на этом: http://www.atozed.com/IntraWeb/index.en.aspx
для Google карты все получилось и довольно просто, а вот OpenStreetMap ну никак не могу победить.:)

bbox = minlon,minlat,maxlon,maxlat

Как применить эти константы?
Так не выходит:
http://www.openstreetmap.org/export/emb … 2,30.48855

Offline

#19 2009-02-16 13:26:45

liosha
Member
From: Moscow
Registered: 2008-03-04
Posts: 8,447
Website

Re: Cтатические карты

это, блин, не константы  lol
это то, что обозначают эти числа
minlon = minimum longitute = долгота левого угла
аналогично lat = широта
мне это казалось очевидным

Last edited by liosha (2009-02-16 13:28:01)

Offline

#20 2009-02-16 13:42:51

Lena44
Member
Registered: 2009-02-13
Posts: 19

Re: Cтатические карты

долгота левого угла

Все что у меня есть, это широта и долгота автомобиля в базе данных для установки маркера. Откуда мне знать долготу, например левого угла?

Код от wildMan пока я не могу применить.

Я хочу получить карту по размеру примерно такую как тут:
mapod0.th.gif

Offline

#21 2009-02-16 13:57:45

liosha
Member
From: Moscow
Registered: 2008-03-04
Posts: 8,447
Website

Re: Cтатические карты

а в чём проблема их посчитать в зависимости от положения маркера??

Offline

#22 2009-02-16 14:04:59

Lena44
Member
Registered: 2009-02-13
Posts: 19

Re: Cтатические карты

liosha wrote:

а в чём проблема их посчитать в зависимости от положения маркера??

Пробую, но что-то не совсем получается.:(
Вот если имеем такие координаты: 50.43122, 30.48855
Вы как посчитаете если, не использовать алгоритм от wildMan?

Offline

#23 2009-02-16 14:09:22

liosha
Member
From: Moscow
Registered: 2008-03-04
Posts: 8,447
Website

Re: Cтатические карты

bbox = 30.48855-dlon,50.43122-dlat,30.48855+dlon,50.43122+dlat
dlon и dlat - хоть константами прописать

Offline

#24 2009-02-16 14:29:39

Lena44
Member
Registered: 2009-02-13
Posts: 19

Re: Cтатические карты

bbox = 30.48855-dlon,50.43122-dlat,30.48855+dlon,50.43122+dlat

Какие вы задаете значения для dlon и dlat? Я пробывала разные цифры - меняется только масштаб карты а не ее размер.:(

Offline

#25 2009-02-16 14:42:58

liosha
Member
From: Moscow
Registered: 2008-03-04
Posts: 8,447
Website

Re: Cтатические карты

ну размер-то уже не от адреса зависит, а от области отображения

можно вот так, например:
<iframe height=200 width=200 src="http://www.openstreetmap.org/export/embed.html?bbox=30.4213,50.3783,30.6121,50.4883&layer=mapnik&marker=50.43122,30.48855">

Offline

Board footer

Powered by FluxBB