У меня есть страница PHP, которая составляет файл KMZ для загрузки.
Этот KMZ содержит KML с наложением JPEG.
Я предполагаю, что этот файл правильный, потому что KML может открываться Google Планета Земля без проблем. Это фрагмент, который я использую для генерации KMZ из оверлеев KML и JPEG:
$zip = new ZipArchive();
$tmp_file = tempnam('.','');
$zip->open($tmp_file, ZipArchive::CREATE);
$download_file = file_get_contents($kml);
$zip->addFromString(basename($kml),$download_file);
$download_file = file_get_contents($jpeg);
$zip->addFromString("files/".basename($jpeg),$download_file);
$zip->close();
header('Content-disposition: attachment; filename=test.kmz');
header('Content-Type: application/vnd.google-earth.kmz .kmz');
readfile($tmp_file);
Проблема в том, что как в OS X, так и в Windows KMZ нельзя открыть в Google Earth.
Но если я распакую его в Windows, полученный KML + JPEG откроется без проблем.
В OSX я не могу разархивировать KMZ, потому что он поврежден.
Я думаю, что проблема могла быть в заголовке или типе пантомимы.
У кого-то есть опыт с этим?
KMZ имеет стандартный формат, который сжимает файл doc.kml. Вся строка kml должна быть записана в файле doc.kml. В PHP я бы сделал
$zip->addFromString("doc.kml", $kmlString);
Других решений пока нет …