Загрузить файл Kml из хранилища и показать на карте - PullRequest
0 голосов
/ 10 марта 2020

Файл Kml загружается с использованием FTP с библиотекой apache и сохраняется в хранилище:

    File dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
    File downloaded = new File(dir.getAbsolutePath() + "/0001_0005.kml");
    OutputStream outputStream1 = new BufferedOutputStream(new FileOutputStream(downloaded));
    boolean success = ftp.retrieveFile("/0001_0005.kml", outputStream1);
    outputStream1.close();

Как преобразовать файл в тип KmlLayer и отобразить его на карте? Я могу показать файл, если импортируется из raw-пакета на ресурсах без проблем.

    KmlLayer layer = new KmlLayer(mMap,R.raw.test,getContext());
    layer.addLayerToMap();

1 Ответ

0 голосов
/ 10 марта 2020

Вы можете использовать что-то подобное:

private KmlLayer createLayerFromFile(String kmlFileName) {
    KmlLayer kmlLayer = null;

    InputStream inputStream;

    try {
        inputStream = new FileInputStream(kmlFileName);
        kmlLayer = new KmlLayer(mGoogleMap, inputStream, getApplicationContext());
        inputStream.close();
    }
    catch(IOException e)
    {
        e.printStackTrace();
    } catch (XmlPullParserException e) {
        e.printStackTrace();
    }

    return kmlLayer;
}

и использовать это так:

@Override
public void onMapReady(GoogleMap googleMap) {
    mGoogleMap = googleMap;

    // path to your kml file 
    String kmlFileName = dir.getAbsolutePath() + "/0001_0005.kml";
    try {
        KmlLayer kmlLayer = createFromKml(kmlFileName);
        kmlLayer.addLayerToMap();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (XmlPullParserException e) {
        e.printStackTrace();
    }
}
...