Генератор тайлов с картинки на Android Google Maps

Это мой первый вопрос здесь, так что давайте перейдем сразу к делу

У меня есть карта в формате png высокого разрешения с географическими координатами углов, которую я хотел бы интегрировать с Google Maps Api в свое приложение для Android.

Что я уже сделал:

  • Я нарезал карту тайлами 256х256 пикселей и написал URITileProvider. Оказывается, карта имеет смещение, наклонена и требует изменения размера.

  • Я нашел MapTiler и попробовал его. Он позволяет задавать координаты углов и генерирует тайлы. Текущая бесплатная версия создает водяной знак, поэтому я также проверил предыдущие бета-версии - но там координата плитки "y" находится на другом полушарии. Конечно, я мог бы попытаться их отобразить, но это не решает мою проблему с тильтом.

  • Я также нашел приложение для Android CustomMaps. Это превосходно! Он делает почти то, что я хочу, за исключением того, что он не генерирует плитки. Есть возможность взять файл изображения, нанести его на карту, выбрав точки с изображения и привязав их к гугл карте. Он также обеспечивает хороший обзор.

Итак, вот мой вопрос:

Есть ли бесплатный инструмент, который сочетает в себе функции MapTiler и CustomMaps, которые я мог бы использовать для выравнивания моего изображения по карте и разделения его на допустимые плитки?

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


person Marcin Kunert    schedule 26.10.2013    source источник


Ответы (1)


Мне удалось решить эту проблему, и я подумал, что поделюсь ею с вами. Я написал свой собственный генератор тайлов. Решение, конечно, не идеальное и может потребовать гораздо больше работы. Любые взносы приветствуются.

Вот шаги, чтобы заставить его работать:

  1. Используйте Google Maps, увеличьте нужную область, вставьте в программу графического редактирования в качестве фонового слоя.
  2. Вставьте наложенную карту в графическую программу на другом слое и трансформируйте ее, чтобы она соответствовала фоновой карте.
  3. Используя карты Google, прочитайте как можно точнее максимальную / минимальную широту и долготу.
  4. Используйте мой MapTileGenerator для создания листов.
  5. В 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: Инструкции по созданию фрагментов карты. К сожалению, это на польском языке, но сообщение должно быть довольно ясным после прочтения пунктов выше.

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

person Marcin Kunert    schedule 12.12.2013
comment
Ладно, чувак, мне нужна твоя помощь. Я пытаюсь реализовать это, и это не работает. Пожалуйста, если вас не так много, свяжитесь со мной: [email protected] - person Vulovic Vukasin; 23.01.2016