У меня были похожие проблемы.
- вам нужно использовать график
- вам нужно использовать memcache
- Запланированное задание загрузит все файлы kml и сохранит их в кэше
- используйте js для запуска файла jqery load kml для отображения
имеет массив для файлов kml в документе js.
var kmlLayerArray = [];
var kmlLayerRegions = [0,0,0,0,0,0,0,0,0,0,0,0,0,]; // Удерживаем слои
kmlLayer = new google.maps.KmlLayer (url);
kmlLayer.setValues({
suppressInfoWindows : true
});
kmlLayer.setValues({
preserveViewport : bool
});
kmlLayer.setMap(map);
kmlLayerArray.push(kmlLayer);
kmlLayerRegions[region] = kmlLayer;
addKmlEventListener(map,kmlLayer); //extra stuff
функция addKmlEventListener (map, kmlLayer) {
google.maps.event.addListener (kmlLayer, 'click', function (kmlEvent) {
$.ajax({
url : 'http://' + top.location.host + '/mcmap/feed/kml.php?action=kmlclick',
data : "id=" + surveyid,
dataType : 'json',
success : function(data) {
// do whatever
},
error : function(jqXHR, textStatus,
errorThrown) { }
});
});
}
покормить
if (!$contents = $cache->load("kml_survey_id_" . $surveyId)) {
$log->debug("not cached");
$kml = $mapper->getSurveyKML($seismicLibrary->getSurvey($surveyId), "#FFFFFF"); // format kml file here
$zip = new ZipArchive();
$filename = "/tmp/" . time() . rand() . ".zip";
$res = $zip->open($filename, ZipArchive::CREATE);
if ($res === TRUE) {
$zip->addFromString("doc.kml", $kml);
$zip->close();
}
$file = fopen($filename, "rb");
$contents = fread($file, filesize($filename));
fclose($file);
unlink($filename);
//$log->debug($kml);
$cache->save($contents, "kml_survey_id_" . $surveyId);
}
header('Content-type: application/vnd.google-earth.kml+xml');
//header('Content-type: application/vnd.google-earth.kmz');
echo $contents;