动态kml谷歌地图

时间:2010-10-29 17:19:16

标签: php javascript google-maps kml

我想用kml创建一个google地图应用,我想根据用户的缩放动态创建kml文件。

谷歌地球,但在谷歌地图(缩放部分)

我尝试使用markermanager和clusterer,但我有太多的标记和移动设备上的性能非常糟糕,但是kml不是问题,但我一次显示所有标记。

我尝试在kml文件中使用NetworkLink,但我没有得到任何参数,如缩放或界限(我使用的是php)

我知道可以用JavaScript完成

new google.maps.KmlLayer('mykmlgenerator.php?zoom='+zoom);

但我想避免那有什么办法吗?

谢谢

2 个答案:

答案 0 :(得分:2)

我试过这个,只是意识到Google地图的动态KML很笨拙。如果可以,只需将KML转换为JSON并使用Google Maps JavaScript API(https://developers.google.com/maps/documentation/javascript/)在地图上创建标记就更容易了。

答案 1 :(得分:1)

首先,让我清楚一点,如果你想使用动态KML,OpenLayers比谷歌地图更好。接下来,我想提供一些我们将在OpenLayers中使用的简单JavaScript。您应该尝试使用它们,因为它也使用JavaScript库。

这里我简要介绍一下如何编写代码。

<html>
<head>
<title>Google Layer with KML file</title>
<link rel="stylesheet" href="http://openlayers.org/api/theme/default/style.css" type="text/css" />
<link rel="stylesheet" href="http://openlayers.org/dev/examples/style.css" type="text/css" />
<script src='http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAl9RMqSzhPUXAfeBCXOussRTQDbvAygy0cfGJr8dEMAYKf3RWNBQqP9mjKIsqTfmAlz5LOJ3Xpy5s4w'></script>
<script src="http://openlayers.org/api/OpenLayers.js"></script>
<script type="text/javascript">

var map;

function init() {
    // Create the map object
    map = new OpenLayers.Map('map');
    // Create a Google layer
    var gmap = new OpenLayers.Layer.Google(
        "Google Streets", // the default
        {numZoomLevels: 20}
    );
    // Add layer to map
    map.addLayer(gmap);

    //Adding KML file to map
    map.addLayer(new OpenLayers.Layer.GML("KML", "yourkml.kml", 
           {
            format: OpenLayers.Format.KML, 
            formatOptions: {
              extractStyles: true, 
              extractAttributes: true,
              maxDepth: 2
            }
           }));
    // Zoom to Kuala Lumpur, Malaysia
    map.setCenter(new OpenLayers.LonLat(101.686855,3.139003), 13);         
}
</script>
</head>
<body onload="init()">
<h1 id="title">Google Layer with KML file</h1>
<div id="map" style='width: 700px; height: 700px'></div>
</body>
</html>

如您所见,地图上有一个小橙点。这是Google地图上加载的KML文件。如果您想刷新它们,请查看link

最后但并非最不重要的是,我希望我的答案对你来说还不算太晚。

相关问题