Я создал файл KMZ с помощью приведенной ниже программы. В моем проекте maven я создал папку с именем files
в папке проекта, я добавил изображение с именем grn-pushpin.png
в папку с файлами.
В моей программе при создании KMZ я передал свое изображение, как показано ниже.
FileInputStream is = new FileInputStream("files/grn-pushpin.png");
ZipEntry zEnt = new ZipEntry("files/grn-pushpin.png");
При показе изображения точки в KML я дал ps.println("<Icon><href>files/grn-pushpin.png</href></Icon>");
Теперь он показывает изображение, но кажется, что оно показывается только из локальной папки.
Как я могу убедиться, что изображение исходит из файла KMZ?
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import org.apache.commons.io.IOUtils;
import java.io.*;
public class TestKmz {
public static void main(String[] args) throws IOException {
createKMZ();
System.out.println("file out.kmz created");
}
public static void createKMZ() throws IOException {
FileOutputStream fos = new FileOutputStream("out.kmz");
ZipOutputStream zoS = new ZipOutputStream(fos);
ZipEntry ze = new ZipEntry("doc.kml");
zoS.putNextEntry(ze);
PrintStream ps = new PrintStream(zoS);
ps.println("<?xml version='1.0' encoding='UTF-8'?>");
ps.println("<kml xmlns='http://www.opengis.net/kml/2.2'>");
// write out contents of KML file ...
ps.println("<Placemark>");
// add reference to image via inline style
ps.println(" <Style><IconStyle>");
ps.println(" <Icon><href>files/grn-pushpin.png</href></Icon>");
ps.println(" </IconStyle></Style>");
ps.println(" <Point><coordinates>72.877460,19.144808</coordinates></Point> ");
ps.println("</Placemark>");
ps.println("</kml>");
ps.flush();
zoS.closeEntry(); // close KML entry
// now add image file entry to KMZ
FileInputStream is = null;
try {
is = new FileInputStream("files/grn-pushpin.png");
ZipEntry zEnt = new ZipEntry("files/grn-pushpin.png");
zoS.putNextEntry(zEnt);
// copy image input to KMZ output
// write contents to entry within compressed KMZ file
IOUtils.copy(is, zoS);
} finally {
IOUtils.closeQuietly(is);
}
zoS.closeEntry();
zoS.close();
}
}
Я удалил следующие строки кода, но я все равно вижу изображение, это означает, что оно загружается только из папки, а не читается из файла KMZ.
is = new FileInputStream("files/grn-pushpin.png");
ZipEntry zEnt = new ZipEntry("files/grn-pushpin.png");