Генератор плиток с изображения на Android Google Maps
Это мой первый вопрос здесь, так что давайте перейдем прямо к делу
У меня есть карта в формате PNG с высоким разрешением с географическими координатами углов, которую я хотел бы интегрировать с Google Maps Api в моем приложении для Android.
Что я сделал до сих пор:
Я вырезал карту в плитках 256x256 пикселей и написал URITileProvider. Оказывается, что карта имеет смещение, наклонена и должна быть изменена
Я нашел MapTiler и попробовал. Позволяет устанавливать координаты углов и генерировать плитки. Текущая бесплатная версия создает водяной знак, поэтому я также проверил предыдущие бета-версии, но там координата плитки "y" размещена в другом полушарии. Конечно, я мог бы попытаться отобразить их, но это не решило мою проблему наклона
Я также нашел и Android-приложение CustomMaps. Это превосходно! Он делает почти то, что я хочу, за исключением того, что он не генерирует плитки. Существует возможность взять файл изображения, поместить его на карту, выбрав точки на изображении и связав их с картой Google. Это также обеспечивает хороший обзор.
Вот мой вопрос:
Есть ли бесплатный инструмент, который сочетает в себе функциональность MapTiler и CustomMaps, которые я мог бы использовать, чтобы выровнять свое изображение по карте и разделить его на допустимые плитки?
Я думал о редактировании исходного изображения и методом проб и ошибок, но это определенно не тот путь, по которому можно идти. В настоящее время я думаю о создании своего собственного инструмента, но логически думаю, что уже должно быть решение.
1 ответ
Мне удалось решить эту проблему, и я подумал, что поделюсь этим с вами. Я написал свой собственный генератор плиток. Решение, конечно, не является идеальным и может потребовать гораздо больше работы. Любые вклады приветствуются.
Вот шаги, чтобы заставить это работать:
- Используйте Google Maps, увеличьте нужную область, вставьте в программу графического редактирования в качестве фонового слоя.
- Вставьте свою карту наложения в графическую программу на другом слое и преобразуйте ее, чтобы она соответствовала карте в фоновом режиме.
- Используя карты Google, читайте как можно точнее максимальную / минимальную широту и долготу
- Используйте мой MapTileGenerator для генерации плиток.
В Android используйте URITileProvider
@Override public URL getTileUrl(int x, int y, int zoom) { String url = MAP_FILES_URL + x + "-" + y + "-" + zoom + ".png"; try { return new URL(url); } catch (MalformedURLException e) { // ignore } return null; }
Я записал короткое видео для процесса. Он доступен на youtube: Инструкции по генерации листов карты. К сожалению, оно написано на польском языке, но после прочтения вышеприведенных пунктов сообщение должно быть довольно четким
Я хорошо знаю, что у сценария, который я написал, есть проблемы с управлением памятью, и он должен использовать многопоточность. Я надеюсь, что смогу вернуться к нему в ближайшее время.