2016-10-08 60 views
0

我有一個PHP頁面,它構成了一個KMZ文件供下載。 此KMZ包含帶有JPEG疊加層的KML。在Apache上使用PHP生成的KMZ文件的正確標題和配置

我認爲這個文件是正確的,因爲KML可以被Google Earth打開而沒有問題。這是我用來從KML和JPEG疊加產生KMZ的片段:

$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無法在谷歌地球打開。

但是,如果我在Windows中解壓縮,則會打開生成的KML + JPEG而不會出現問題。

在OSX中,我無法解壓縮KMZ,因爲它導致損壞。 我認爲這個問題可能是頭文件或MIME類型。

有人有這方面的經驗嗎?

回答

1

KMZ有壓縮doc.kml文件的標準格式。所有的kml字符串應該寫在doc.kml文件中。在PHP中,我會做

$zip->addFromString("doc.kml", $kmlString);