Is there a way to just add an image file into a kmz file using Java API for KML (JAK)? I can create a kml file with no problem, but I’m trying to just embed a resources (such as an images folder with some image files), but the marshalAsKmz method takes only Kml objects as additional files, so I can’t figure out how to just include extra images.
Share
I’ve been using JAK for over a year on a project. I use it to create the KML, then I marshal it as just plain KML (not KMZ). I created a separate utility class that uses the Java SE ‘Zip’ classes to manually create the KMZ. It works just fine. A KMZ is nothing more than a .zip archive that contains exactly one .kml file and 0 or more resource files (such as images, etc). The only difference is that you name the file as .kmz instead of .zip when you output it. In the KML document
<Style>definitions, refer to your resources files with paths relative to the KML document itself. The KML file is considered to be at the ‘root’ of the KMZ archive. If your resource files are also located in the root of the KMZ (.zip) then you don’t need a path, just the filename.EDIT: I actually forgot that I removed the intermediate step of marshalling the JAK
Kmlobject to a file before I zip it. My utility method below will marshal theKmlobject directly to theZipOutputStream.Here is a utility class that I created to do just what I have described. I’m posting it here in the hope that someone else posts an alternate solution that uses only JAK so I can retire this code in the future. For now, this will do the job for you.
NOTE: If you don’t use slf4j, Apache Commons Lang or Commons I/O then just make a few adjustments to the code to remove/replace those bits with your own code. Obviously this code requires the JAK library.