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

может ли кто-нибудь сказать мне, есть ли способ загрузить файл kml в google map в android.

спасибо

3 ответов


пожалуйста, найдите образец кода здесь, который получает данные kml от google и рисует его на карте:

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


несколько месяцев назад я искал аналогичную функцию, но не смог найти способ загрузить файл с 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 maps, насколько я знаю, будет загружать только один файл KML с веб-сервера.

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


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