代码之家  ›  专栏  ›  技术社区  ›  John Moffitt

Android:从谷歌地图获取无效的kml文件

  •  3
  • John Moffitt  · 技术社区  · 15 年前

    我正在尝试从maps.google.com获取并显示一个live.kml文件,使用

    Uri.parse("geo:0,0?q=http://maps.google.com/maps/ms?ie=UTF8&hl=en&msa=0&msid=104538451667315338387.0004887d133ba2ab6eec9&ll=42.029611,-93.646109&spn=0.011396,0.022724&z=16l&output=kml");
    
    Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapUri);
    
    startActivity(Intent.createChooser(mapIntent, "lol"));
    

    但是,打开mapview后,我收到一个通知,说“社区地图无法显示,因为它包含错误”

    只有当我直接从maps.google下载.kml时,才会得到这个错误。如果我将完全相同的链接复制到我的地址栏中,下载.kml文件并将其上载到其他地方,那么它就可以正常工作。我希望能够直接从谷歌获得地图,这样我可以做一个改变,它将立即反映给我的用户。

    4 回复  |  直到 14 年前
        1
  •  2
  •   Torben Vesterager    14 年前

    我也遇到了同样的问题-如果您使用“&作为参数分隔符,Android版的Google Maps会切断URL,因此使用“%26”代替:

    Intent navigateToIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(
        "geo:0,0?q=http://m.konzoomer.com/kml?id=" + id +
        "%26latitudeE12=" + latitudeE12 + "%26longitudeE12=" + longitudeE12 +
        "%26radiusMeters=" + radiusMeters));
    
        2
  •  1
  •   zed_0xff    15 年前

    尝试将Android下载的数据显示为文本(即通过system.out.println),可能它包含Google错误消息描述。

        3
  •  1
  •   John Moffitt    14 年前

    我不久前解决了这个问题,我想我会为其他面临这个问题的人更新。我使用的解决方案是将链接复制到自定义地图,附加&output=kml,并使用链接缩短服务。出于某种原因,Android只是不喜欢谷歌地图提供的URL,它对文件本身绝对没有问题。

    这远远不是一个优雅的解决方案,因为我既依赖于谷歌地图,也依赖于我的网址缩短选择工作,以获得用户的手机KML文件。如果他们中的任何一个失败,那么我的系统将无法工作。

    我愿意接受其他选择,如果有其他选择,我会改变我的答案。

        4
  •  0
  •   Steve    15 年前

    如果只使用plain maps.google.com链接创建意图,而不使用“&output=kml”,会怎么样?