Я новичок в Android, поэтому я могу упустить некоторые очень простые вещи.
Я пытаюсь разместить пользовательские файлы KML на сервере за брандмауэром и отобразить эти файлы KML в эмуляторе Android.
Я начал с написания простого приложения, которое использует Intent для отображения наложения и указывает приложению на geo:0,0?q=http://code.google.com/apis/kml/documentation/KML_Samples..kml. Это работает в эмуляторе.
Затем я скачал этот KML-файл и разместил его на своем веб-сервере (Apache 2.2 в Fedora). Я добавил директиву AddType для расширения .kml и перезапустил HTTPD.
Когда я указываю Intent моего простого приложения на мой внутренний файл KML, я получаю сообщение об ошибке «Не удалось отобразить карту сообщества, поскольку она содержит ошибки».
Я добавил некоторый код, чтобы попытаться загрузить файл KML независимо от KML, чтобы я мог проверить строку состояния и тому подобное:
final HttpClient client = new DefaultHttpClient();
final HttpGet get = new HttpGet("http://mycompany.com/data/KML_Samples.kml");
try {
final HttpResponse resp = client.execute(get);
android.util.Log.e("MapOverlays", resp.toString());
} catch (Throwable t) {
android.util.Log.e("MapOverlays", "Exception", t);
}
С точкой останова в первой строке сообщения журнала я могу проверить результаты:
строка состояния = "HTTP/1.1 200 ОК"
Тип контента: application/vnd.google-earth.kml+xml
Вот намерение, которое я использую:
final Intent intent = new Intent(
android.content.Intent.ACTION_VIEW,
Uri.parse("geo:0,0?q=http://mycompany.com/data/KML_Samples.kml"));
startActivity(intent);
Итак, два основных вопроса
- Что мне нужно сделать, чтобы загрузить KML с частного сервера?
- Какие инструменты доступны (если есть) для определения того, что не так с моими действиями (что-то более информативное, чем "Карта сообщества...")?
Спасибо