Перейти к содержанию
Fire Monkey от А до Я
  • 0

OpenStreetMap


Rusland

Вопрос

Рекомендуемые сообщения

  • 0

вот здесь написано как вычислить номера тайлов по известным GPS координатам

вычисляем тайл в центре карты

далее просто арифметика - размеры окна поделить на 256 - получим кол-во тайлов, которые нужно получить с сервера

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

Ссылка на комментарий
  • 0

данные OSM - бесплатные. а сервера - нет

если весь мир кинется качать картинки на халяву, все тут же ляжет

поэтому OSM разрешает вам для пробы пользоваться их сервером, но при достижении некоего порога - все заканчивается

аналогично 50000 запросов в мес дает вам MapBox. но если у вас карта 1000*1000 точек, то там уже 16 тайлов

а если вы поводите мышью туда - сюда, оп - и уже 100 запросов...

так что сервер либо оплачивать, либо поднимать самому...

Ссылка на комментарий
  • 0
function osmGetTile(const Latitude, Longitude: double;const Scale: integer): TTile;
begin
  Result.Scale:=Scale;
  Result.TileX:=osmGetTileX(Latitude, Longitude, Scale);
  Result.TileY:=osmGetTileY(Latitude, Longitude, Scale);

end;

function osmGetTileX(const Latitude, Longitude: double; const Scale: integer): integer;
begin
  Result:=Floor((Longitude+180)/360*Power(2, Scale));
end;

function osmGetTileY(const Latitude, Longitude: double; const Scale: integer): integer;
begin
  Result:=Floor((1-ln(Tan(Latitude*PI/180)+1/Cos(Latitude*PI/180))/PI)/2*Power(2, Scale));
end;

Что касается тайлов. их можно получить либо скачивая с сайта по URL 'http://tile.openstreetmap.org/'+Scale/+ TileX/+TileY.png, либо установить программу, которая подключается к БД OSM и нарезает тайлы в указанный каталог на вашем ПК.

При разработке логики программы необязательно задействовать собственный тайловый сервер, достаточно кешировать просматриваемые с сайта тайлы (например, так работает яндекс.навигатор)

Ссылка на комментарий
  • 0

все верно.

тот же яндекс дает 100000 запросов, после чего присылает коммерческое предложение на "от 300000 руб в год"

кэширование - вещь отличная, и даже необходимая, только объем данных великоват - Екатеринбург в 19 масштабах занимает 19 ГБайт )

 

Ссылка на комментарий
  • 0

правильно, но, ерзая по карте, потихоньку придется закешировать все )))

так что надо еще второй алгоритм - как часто нужный кусок достается из кэша. чтобы контролировать, что удалять, когда кэш разрастется

Ссылка на комментарий
  • 0

Не уверен,  за два года пользованием яндекс.навигатор (Москва -Нижний Новгород, Волгоград, Иркутск,  Улан-Удэ) 1.5 Гб. Масштабы 6-18. Самые емкие масштабы с 15-20, но они нужны участками

Ссылка на комментарий

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...