doukenqiong0588 2016-10-08 07:49
浏览 46
已采纳

纠正在Apache上用PHP生成的KMZ文件的标头和配置

I've got a PHP page that composes a KMZ file for download. This KMZ contains a KML with a JPEG Overlay.

I assume that this file is correct because the KML can be opened by Google Earth without problem. This is the snippet that I use to generate KMZ from KML and JPEG Overlay:

$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);

The problem is that both in OS X and Windows the KMZ cannot be opened in Google Earth.

But if I unzip it in Windows, the resulting KML+JPEG are opened without problems.

In OSX, I can't unzip the KMZ because it results corrupted. I think that the problem could be in header or mime type.

Does someone have experience with this?

  • 写回答

1条回答 默认 最新

  • douzuan2814 2017-05-19 10:46
    关注

    KMZ has a standard format which compresses doc.kml file. All the kml string should be written in doc.kml file.In PHP, I would do

    $zip->addFromString("doc.kml", $kmlString);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!