Посмотри, пожалуйста, ссылку, которую я привел в качестве примера. В нее можно вставлять произвольные координаты и масштаб
Я посмотрела. Там фрагмент карты в формате PNG предлагается сохранить. Я не совсем понимаю как Export может мне помочь.
Вот есть 10 автомобилей. Их координаты присылают спец.устройства установленные на автомобилях. Допустим автомобилей 10. Сегодня один в Германии, другой в России и т.д. Завтра они в другом месте… Мне что постоянно подготавливать фрагменты карты самой через Export?
Извините, но можно поподробнее, а то я не понимаю.
У Google все мне понятно - просто формирую ссылку…
Мне нужны статические фрагменты карты в проивольный момент времени в произвольной точке мира и чтобы я сама эти фрагменты не создовала, ну как у Google.
Да и самое гланое, я так понимаю, нет возможности добавить маркер на карту как у Google?
Маркер важен т.к. показвает местоположение авто, а это главное.
Мне OpenStreetMap нужен т.к. у Google, например, карта Украины без подробностей…
http://cloudmade.com/
в частности http://developers.cloudmade.com/projects/show/tiles и остальное на http://developers.cloudmade.com/projects
основная команда разработчиков обитает в Киеве
Большое спасибо за ссылки!
Буду копаться.
Лена, посмотрим еще раз внимательно на ссылку, которую я выше привел
ссылка tile.openstreetmap.org/cgi-bin/export?bbox=37.6082,55.7433,37.6429,55.7598&scale=27500&format=png
После bbox указываешь границы нужной области, после scale - нужный масштаб
Картинка приходит как “вложение”, т.е. открывается окно для сохранения.
Установи, например свой веб-сервер, который скачивает картинку с openstreetmap.org, а пользователю передает в обычном виде, не делая его вложением.
Прямой возможности вставить маркер нет. Но можно самому реализовать такую возможность самостоятельно
Все равно, не доходит.
Вот есть авмтомбиль и у меня в базе прибор прислал его широту и долготу (для маркера).
Как используя эту информацию расчитать границы области?
Я например хочу, чтобы карта всегда была размером 400 на 400 пикселей, а в центре ее автомобиль с его широтой и долготой из базы данных.
Получается так?:
- Придумать чтобы область всегда была 400 на 400.
- Придумать на сервере логику для скачивания картинки с openstreetmap.org с нужной областью 400 на 400.
- Отправить ее пользователю в обычном виде.
- Придумать как поставить маркер.
Сложновато.
Лена - задачи сформулировала правильно
Формула для пересчета из координат в пиксели и обратно есть в коде javascript-библиотеке OpenLayes.
Альтернативу wildMan уже упомянул - Cloudmade. Все-таки это коммерческая организация. А OpenStreetMap - некоммерческая
так врядли получится. помоему тайлы всегда размером 256x256. но на разных zoom они охватывают разную площадь
надо:
- получить тайл на который попадает точка-маркер ( формула http://developers.cloudmade.com/projects/tiles/examples/2 )
- скачать тайл
- скачать например 8 соседних тайлов
соответственно получим кусочек 3x3 тайла (768x768 px) приблизительно в центре которого будет точка полученная от авто
из него уже можно вырезать 400x400 если надо
vvoovv, Cloudmade создали создатели OSM. большая часть сервисов предоставляемая ими - свободна
если заметили то mapnik теперь рендерит не раз в неделю а гораздо оперативней (иногда за полчаса-час) - это тоже заслуга Cloudmade.
так врядли получится. помоему тайлы всегда размером 256x256. но на разных zoom они охватывают разную площадь
Ссылка которую я привел рисует не тайл 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 имея координаты маркера, я что-то не нахожу.
Хочу чтобы карта была по размеру шириной и высотой примерно как инструмент 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
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/embed.html?bbox=minlon,minlat,maxlon,maxlat&layer=mapnik&marker=50.43122,30.48855
это, блин, не константы
это то, что обозначают эти числа
minlon = minimum longitute = долгота левого угла
аналогично lat = широта
мне это казалось очевидным
долгота левого угла
Все что у меня есть, это широта и долгота автомобиля в базе данных для установки маркера. Откуда мне знать долготу, например левого угла?
Код от wildMan пока я не могу применить.
а в чём проблема их посчитать в зависимости от положения маркера??
а в чём проблема их посчитать в зависимости от положения маркера??
Пробую, но что-то не совсем получается.
Вот если имеем такие координаты: 50.43122, 30.48855
Вы как посчитаете если, не использовать алгоритм от wildMan?
bbox = 30.48855-dlon,50.43122-dlat,30.48855+dlon,50.43122+dlat
dlon и dlat - хоть константами прописать