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

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

На www.openstreetmap.org есть закладка Export. Там можно задать область и получить карту для этой области.
Я рекомендовал бы поизучать.
URL имеет такой вид:
http://tile.openstreetmap.org/cgi-bin/export?bbox=37.6082,55.7433,37.6429,55.7598&scale=27500&format=png

Получается у OpenStreetMap нет того сервиса, что мне нужен…
Для Googla не надо ничего вырезать…
Google сам вырезает, любой фрагмент карты мира.
Я просто передаю ссылку для img:
[http://maps.google.com/staticmap?center=40.714728,-73.998672&zoom=14&size=512x512&maptype=mobile\](http://maps.google.com/staticmap?center=40.714728,-73.998672&zoom=14&size=512x512&maptype=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 сам все делает, плюс есть возможность поставить маркер на карте.

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

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

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

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

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

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

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

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

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

  1. Придумать чтобы область всегда была 400 на 400.
  2. Придумать на сервере логику для скачивания картинки с openstreetmap.org с нужной областью 400 на 400.
  3. Отправить ее пользователю в обычном виде.
  4. Придумать как поставить маркер.
    Сложновато.:slight_smile:

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

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

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

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

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

Ссылка которую я привел рисует не тайл 256x256, а произвольную область. Например размер области по ссылке http://tile.openstreetmap.org/cgi-bin/export?bbox=37.6082,55.7433,37.6429,55.7598&scale=27500&format=png 501x423 пикселя

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

Всем большое спасибо:)
1.Прежде чем пробывать с титлами (я уже согласна и на размер 256 на 256), меня бы уже очень устроила просто такая ссылка на моей странице:
http://www.openstreetmap.org/export/embed.html?bbox=30.4213,50.3783,30.6121,50.4883&layer=mapnik&marker=50.43122,30.48855
тут и маркер готовый. Цифры я бы программно добавляла.
Только размер карты конечно не подходит.
Подскажите, пожалуйста, формулу как правильно посчитать bbox имея координаты маркера, я что-то не нахожу.:frowning:
Хочу чтобы карта была по размеру шириной и высотой примерно как инструмент Zoom по этой ссылке…

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

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

bbox = minlon,minlat,maxlon,maxlat

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 ну никак не могу победить.:slight_smile:

Как применить эти константы?
Так не выходит:
http://www.openstreetmap.org/export/embed.html?bbox=minlon,minlat,maxlon,maxlat&layer=mapnik&marker=50.43122,30.48855

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

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

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

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