В чем секрет размещения пользовательского KML для использования в Google Maps Mobile?

Я новичок в 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);

Итак, два основных вопроса

  1. Что мне нужно сделать, чтобы загрузить KML с частного сервера?
  2. Какие инструменты доступны (если есть) для определения того, что не так с моими действиями (что-то более информативное, чем "Карта сообщества...")?

Спасибо


person JoshOfAllTrades    schedule 14.07.2010    source источник


Ответы (1)


Это могут быть глупые вопросы, но мне нужно знать, подтвердили ли вы, что рассматриваемый файл KML действительно является действительным KML.

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

person jjrdk    schedule 07.08.2010
comment
Я предположил, что KML действителен, поскольку загрузил копию с сайта Google и разместил ее на своем собственном веб-сервере. Мне придется покопаться в нем, чтобы увидеть, есть ли какие-либо внешние ссылки, но если бы они были, то разве обе не потерпели бы неудачу? - person JoshOfAllTrades; 09.08.2010
comment
Причина, по которой я спросил, заключалась в том, что сообщение об ошибке не имело отношения к вашему приложению. Судя по вашей сетевой информации, похоже, что на самом деле он получает файл KML (так ли это? Вы проверили длину ответа?), тогда ошибки, о которых я мог подумать, будут связаны с искаженным KML. - person jjrdk; 09.08.2010