次のような URL の Google マップを使用して、ブラウザーで KMZ または KML ファイルを開くことができることを私は知っています。
https://maps.google.it/maps?q=http://myserver.com/mymap.kmz
ただし、認証されたユーザーのみがその kmz を開くことができるようにしたいと考えています。そのために、kmz フォルダーを .htaccess で保護し、ユーザーがログインしているかどうかをチェックし、そのチェックに合格した後にのみ kmz ファイルを返す php ページをコーディングしました。
...
if(isset($_SESSION['trusted'])) {
if(isset($_GET['map']) && $_GET['map']!="") {
$map = $_GET['map'];
readfile("./kmz/$map");
}
...
だから、今私のURLは次のとおりです。
https://maps.google.it/maps?q=http://myserver.com/requestkmz.php?map=mymap.kmz
問題は、php が readfile で返すファイルが、ファイル システム内の元のファイルと同一ではないことです。ヘッダーを挿入したり、エンコーディングを指定したりする必要がありますか?
アップデート
PHP ファイルにヘッダーを追加しましたが、同じ結果が得られました。生成された KMZ は元のファイルと同様に有効ではありません。これは、readfile 行の前に追加されたヘッダーです。
header("Cache-Control: no-cache, no-store, must-revalidate");
header('Content-Type: application/vnd.google-earth.kmz');
header("Content-Disposition: inline");
header("Content-Description: KMZ data intended for Google Earth");