KML图层未显示在Google地图中

时间:2018-09-03 13:47:13

标签: java android google-maps google-maps-android-api-2 kml

我在Google Maps中显示某些KML时遇到问题,这种情况发生在经过方法addLayerToMap之后,它没有呈现在地图上。

有趣的是,当我将其放在Google MyMaps中时,它同样可以正常工作,即使我从那里导出并设置为在应用程序的Google Maps中显示,它也可以正常显示。

我注意到MyMaps极大地改变了KML的结构,它甚至更小(在行数和大小方面)。

KML文件(原始):https://drive.google.com/file/d/1Z4AZMP1xNMgVNNXjK11-kD0gwlPLmJmR/view?usp=sharing

PS:在无效的图像路径上,我手动进行了更改,没有任何结果。

KML文件(由Google MyMaps解析):https://drive.google.com/file/d/1WPT3ZogzjTNa9ITeZze1cYf3ly4JFpUZ/view?usp=sharing

我用来读取KML的方法(适用于我尝试过的大多数KML,包括Google自己的示例):

private void retrieveFileFromResource() {
    try {
        KmlLayer kmlLayer = new KmlLayer(mMap, R.raw.teste3, getActivity());
        kmlLayer.addLayerToMap();
        moveCameraToKml(kmlLayer);

    } catch (IOException e) {
        e.printStackTrace();
    } catch (XmlPullParserException e) {
        e.printStackTrace();
    }
}

我正在尝试将组件(折线,多边形,标记等)手动添加到地图,但是没有成功。

1 个答案:

答案 0 :(得分:0)

尝试使用下面的代码检查文件夹中是否存在kml文件,如果存在,则将其显示在Google地图中。

private void retrieveFileFromResources()
{
try
{
int check = this.getResources().getIdentifier(teste3,"folder name", this.getPackageName());
if(check != 0)
{
InputStream inputstream = this.getResources().openRawResource(this.getResources().getIdentifier(teste3,"folder name",this.getPackageName()));
KmlLayer kmlLayer = new KmlLayer(mMap, inputStream, getApplicationContext());
kmlLayer.addLayerToMap();
}
else
{
Toast.makeText(this,"Request KML Layer not available",Toast.LENGTH_LONG).show();
}
}catch(IOException e)
{
e.printStackTrace();
}
catch(XmlPullParseException e)
{
e.printStackTrace();
}
}