2016-10-08 16 views
0

다운로드 할 KMZ 파일을 구성하는 PHP 페이지가 있습니다. 이 KMZ에는 JPEG 오버레이가있는 KML이 포함되어 있습니다.Apache에서 PHP로 생성 된 KMZ 파일의 헤더와 구성이 정확합니다.

Google 어스에서 KML을 문제없이 열 수 있기 때문에이 파일이 올바른 것으로 간주합니다.

$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 어스에서 열 수 없습니다 수 있다는 것입니다 : 이것은 내가 KML 및 JPEG 오버레이에서 KMZ를 생성하는 데 사용하는 조각이다.

그러나 Windows에서 압축을 해제하면 결과 KML + JPEG가 문제없이 열립니다.

OSX에서는 손상된 KMZ를 압축 해제 할 수 없습니다. 문제는 헤더 또는 MIME 형식 일 수 있다고 생각합니다.

누군가이 경험이 있습니까?

답변

1

KMZ에는 doc.kml 파일을 압축하는 표준 형식이 있습니다. 모든 kml 문자열은 doc.kml 파일에 작성되어야합니다. PHP에서 나는 할 것입니다.

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