Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将KMZ文件与OpenLayers一起使用_Openlayers_Kml_Kmz - Fatal编程技术网

将KMZ文件与OpenLayers一起使用

将KMZ文件与OpenLayers一起使用,openlayers,kml,kmz,Openlayers,Kml,Kmz,我有一个.kmz文件,希望在地图上显示数据。 如果我解压文件,提取.kml文件并使用它,我就可以得到地图来显示数据。 但是,由于.kmz文件托管在其他地方,我需要读取该文件,理想情况下不必在每次更新时都在本地解析它 我分析.kml文件的示例如下 var phase1 = new OpenLayers.Layer.Vector("phase1", { projection: new OpenLayers.Projection("EPSG:4326"), strategies: [n

我有一个.kmz文件,希望在地图上显示数据。
如果我解压文件,提取.kml文件并使用它,我就可以得到地图来显示数据。 但是,由于.kmz文件托管在其他地方,我需要读取该文件,理想情况下不必在每次更新时都在本地解析它

我分析.kml文件的示例如下

var phase1 = new OpenLayers.Layer.Vector("phase1", {
    projection: new OpenLayers.Projection("EPSG:4326"),
    strategies: [new OpenLayers.Strategy.Fixed()],
    protocol: new OpenLayers.Protocol.HTTP({
        url: "data.kml",
        format: new OpenLayers.Format.KML({
            extractStyles: true,
            extractAttributes: true
        })
    })
});
上面的内容是否需要更改才能读取.kmz文件

我知道谷歌地图可以直接使用.kmz文件来显示数据,但是OpenLayers可以直接使用.kmz文件吗?
或者是否需要以某种方式解析.kmz文件以提取要显示的.kml?

您必须首先解压缩该文件

  • 要么在服务器上完成(谷歌地图就是这么做的)
  • 或者在客户端使用类似的操作。您可能需要为此编写自己的

kmz文件只是已压缩的kml文件。因此,您需要创建一个扩展OpenLayers.Format.KML的类,该类添加了首先解压缩文件的额外步骤。但问题之一是,当您解压缩文件时,似乎会丢失很多引用。是否有关于编辑内部kml或智能地将文件解压缩到正确空间的指南