Отвечая на мой собственный вопрос. Мне не нужно было разархивировать файл KMZ в файл KML - вы можете создать NetworkLink, который указывает на файл KMZ. Я создал новый файл KML, который содержит только NetworkLink, указывающий на мой файл KMZ на сервере. Этот файл выглядит следующим образом (назовем его link.kml):
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<NetworkLink>
<Link>
<href>https://example.com/myMapOverlay.kmz</href>
<refreshMode>onExpire</refreshMode>
</Link>
</NetworkLink>
</Document>
</kml>
Затем я загружаю этот новый KML-файл в качестве KmlLayer в свой код Google Maps.
var layer = new google.maps.KmlLayer({
url: 'https://example.com/link.kml,
preserveViewport: true,
map: gMap
});
Я также в моем .htaccess явно задано время истечения срока на сервере для файлов KMZ и KML.
<IfModule mod_expires.c>
ExpiresByType application/vnd.google-earth.kml+xml A86400
ExpiresByType application/vnd.google-earth.kmz A86400
</IfModule>
Этот параметр кэширует файлы KML и KMZ в течение 1 дня. Вы можете убедиться, что он работает, перейдя непосредственно к файлу KML или KMZ на вашем сервере, когда инструменты dev открыты на вкладке Network. На левой панели выберите файл, чтобы просмотреть заголовки ответа. Вы должны увидеть Expires: и дату. В конфигурации, описанной выше, даже если срок действия файла истекает ежедневно, он продолжает отображаться как наложение карты без перерыва.