Android: как загрузить KML - PullRequest
       26

Android: как загрузить KML

9 голосов
/ 21 октября 2010

Может кто-нибудь сказать, пожалуйста, есть ли способ загрузить файл kml в карту Google в Android.

спасибо

Ответы [ 3 ]

8 голосов
/ 21 октября 2010

Пожалуйста, найдите здесь пример кода, который получает данные о кмл от Google и выводит их на карту:

Как нарисовать путь на карте с помощью файла кмл?

3 голосов
/ 21 октября 2010

Несколько месяцев назад я искал похожую функцию, но не смог найти способ загрузить файл с SDCard - или даже с помощью поставщика контента. Я не смотрел с тех пор.

Однако один метод, который я обнаружил, оказался полезным, так как я уже общался с веб-сервером

получение карт для приема динамически генерируемого файла KML?

Это позволило мне отправить KML из моего приложения на сервер (связь уже была установлена), сервер сохранил KML, назначил случайную строку и вернул ее приложению, затем приложение передало ссылку на Сервер в стиле:

final Intent myIntent = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("geo:0,0?q=http://website.com/kml_gen.php?id=1kj312"));
startActivity(myIntent);

Сервер вернул список KML для использования приложением карты.

Обновление после комментариев ниже:

final Intent myIntent = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("geo:0,0?q=http://code.google.com/apis/kml/documentation/KML_Samples.kml"));
startActivity(myIntent);

Попробуйте запустить приведенный выше код - при запуске вы увидите, что приложение Google Map открыто, и оно запросит файл kml, в данном случае файл примеров из Google. Это карта с наложением, но теперь она является приложением Google Map и больше не запускается внутри вашего приложения.

Для этого решения вам нужно будет где-то хранить ваш файл KML на веб-сервере - это имеет небольшую проблему в том, что пользователю требуется подключение для передачи данных (которое в любом случае понадобится карте), но если файл kml большой и медленное соединение там может быть задержка).

Вы упомянули, что у вас есть сервер, производящий некоторые динамические данные, а также статические данные. Если статические вещи одинаковы для всех и каждый раз, когда сервер производит некоторые данные, у меня будет соблазн заставить веб-сервер создавать один хорошо отформатированный документ KML, включающий оба набора данных - насколько мне известно, приложение карт Google загрузить один файл KML с веб-сервера.

Другое решение, которое я использовал, было опубликовано выше - если у вас есть статические данные на телефоне (я бы пошел с БД с данными), создайте наложение, рисуя элементы, а также запросите динамические результаты с сервера, добавьте их в пользовательское наложение. Эта опция будет означать, что вам придется кодировать любую дополнительную функцию, которую вы хотите - то есть поиск карты на месте, спутниковый вид ..... Обязательно выполняйте операцию в отдельном потоке, а не в потоке пользовательского интерфейса, особенно при создании больших оверлеев, иначе вы можете получить диалоговое окно Force Close / Wait.

0 голосов
/ 21 октября 2010

Я использовал файлы GPX на карте (Android 1.5), но не было ничего для загрузки KML или GPX. Если он не был добавлен в более новые версии Android, я думаю, вы должны прочитать файл самостоятельно. Вот что я сделал 10 месяцев назад ...

...