如何动态创建具有kml图层叠加的谷歌地图

时间:2012-02-10 09:50:51

标签: google-maps google-maps-api-3

function initialize() {
    var myOptions = {
      center: new google.maps.LatLng(23.71181,90.407467),
      zoom: 8,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("map_canvas"),
        myOptions);
    var map_coverage = new google.maps.KmlLayer('http://mydomain.com/myfile.kmz'  );
    map_coverage.setMap(map);       
    map.setZoom(12);
    map.setCenter(dhaka_latlng);    
  }

以上代码使用kmllayer输出以下地图,并且已使用Google地球创建kml文件,并将其保存为服务器上的kmz(压缩)文件。此文件包含一些xml数据,彩色区域表示标记中的一些坐标以及其他标记,如

<coordinates>
    90.27401489730001,23.9502580159,0 90.2740186914,23.95007761100001 ... so on
</coordinates>

我想使用javascript api-v3动态创建一个与kmllayer类似的地图,但没有谷歌地球的帮助。我的意思是我想用php创建kml文件并将其作为somefile.kmz保存在服务器上。那可能吗 ?任何类型的帮助将不胜感激。谢谢!

如果您需要,我可以发布原始的kml文件但是它很大

enter image description here

1 个答案:

答案 0 :(得分:1)

是的,可以生成新的KML文件服务器端(PHP),然后告诉JavaScript使用生成KML内容的URL加载新的KmlLayer。请注意KML网址:

  • 必须可公开访问,因为Google服务器需要下载
  • 将由Google服务器缓存,在同一网址上提供不同的内容将无法刷新

要克服此缓存,只需在URL中添加一些随机的咔嗒声即可。但是,请注意缓存可以使它快速。您不能同时拥有“超快KML”和“实时新数据”。另外,请密切关注您自己的服务器对KML URL的响应时间,越快越好。