Android 在Google Maps Mobile中托管自定义KML的秘密是什么?

Android 在Google Maps Mobile中托管自定义KML的秘密是什么?,android,google-maps,kml,Android,Google Maps,Kml,我是Android新手,所以我可能会错过一些非常基本的东西 我试图在防火墙后面的服务器上托管自定义KML文件,并在Android emulator上显示这些KML文件 我首先编写了一个简单的应用程序,它使用一个意图来显示覆盖,并将应用程序指向geo:0,0?q=。这在模拟器中起作用 接下来,我下载了KML文件,并将其发布到Fedora上的web服务器Apache2.2上。我为.kml扩展添加了AddType指令,并重新启动了HTTPD 当我将我的简单应用程序的意图指向我的内部托管KML文件时,我

我是Android新手,所以我可能会错过一些非常基本的东西

我试图在防火墙后面的服务器上托管自定义KML文件,并在Android emulator上显示这些KML文件

我首先编写了一个简单的应用程序,它使用一个意图来显示覆盖,并将应用程序指向geo:0,0?q=。这在模拟器中起作用

接下来,我下载了KML文件,并将其发布到Fedora上的web服务器Apache2.2上。我为.kml扩展添加了AddType指令,并重新启动了HTTPD

当我将我的简单应用程序的意图指向我的内部托管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);
}
通过第一条日志消息行上的断点,我可以检查结果:

statusline=HTTP/1.1 200正常

内容类型:application/vnd.googleearth.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? 如果有的话,有什么工具可以用来确定我所做的事情有什么错,比社区地图更具信息性。。。?
谢谢

这些问题可能很愚蠢,但我需要知道您是否已验证所讨论的KML文件实际上是有效的KML


您可能遇到的另一个问题是,您正在下载的KML文件包含的网络链接本身无法从您的Android设备访问。

我从谷歌网站下载了一份副本并将其发布到自己的web服务器时,假设KML是有效的。我必须仔细研究它,看看是否有任何外部链接,但如果有,那么这两个链接不是都失败了吗?我问的原因是错误消息似乎与您的应用程序无关。从你的网络信息看来,它实际上是在获取KML文件,是吗?您是否检查了响应长度?那么我能想到的错误将与格式错误的KML有关。