может кто-нибудь, пожалуйста, скажите мне, есть ли способ загрузить файл kml в карту Google в Android.
Благодарность
может кто-нибудь, пожалуйста, скажите мне, есть ли способ загрузить файл kml в карту Google в Android.
Благодарность
Здесь вы можете найти пример кода, который получает данные 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 открывается, и оно запрашивает файл kml, в данном случае файл образцов из Google. Это карта с наложением, но теперь это приложение карты Google и больше не выполняется внутри вашего приложения.
Для этого решения вам нужно будет где-то сохранить свой KML-файл на веб-сервере - это небольшая проблема в том, что пользователю требуется подключение к данным (которое в любом случае понадобится карте, но если файл kml большой и соединение там медленное возможно задержка).
Вы упомянули, что у вас есть сервер, производящий некоторые динамические данные, а также некоторые статические данные. Если статические данные одинаковы для всех и каждый раз, когда сервер создает какие-либо данные, у меня возникает соблазн заставить веб-сервер создавать один хорошо отформатированный документ KML, включающий оба набора данных - приложение Google Maps, насколько я знаю, будет только загрузить один файл KML с веб-сервера.
Другое решение, которое я использовал, было опубликовано выше - если у вас есть статические данные на телефоне (я бы пошел с БД с данными), создайте оверлей, рисующий элементы, а также запросите динамические результаты с сервера добавьте их в настраиваемый оверлей. Эта опция будет означать, что вам придется закодировать любую дополнительную функцию, которую вы хотите, например, поиск местоположения на карте, вид со спутника ... Обязательно выполняйте операцию в отдельном потоке, а не в потоке пользовательского интерфейса, особенно при создании больших наложения, или вы, вероятно, получите диалоговое окно «Принудительное закрытие / ожидание».
Я использовал файлы GPX на карте (Android 1.5), но не было ничего для загрузки KML или GPX. Если он не был добавлен в более новых версиях Android, я думаю, вам придется прочитать файл самостоятельно. Вот что я сделал 10 месяцев назад ...