2010-10-29 260 views
0

我想创建一个带有kml的谷歌地图应用程序,并且我想根据用户的缩放动态创建kml文件。动态kml谷歌地图

事情是谷歌地球,但在谷歌地图(缩放一部分)

我试图用markermanager和聚类器,但我有太多的标志和移动设备上的表现很糟糕,但与KML是不是问题,但我一次显示所有标记。

我试图在KML文件中使用网络链接,但我不明白,如缩放或界限(我使用PHP)

我知道它可以通过JavaScript

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

,但我做的任何参数想避免那是有什么办法吗?

谢谢

+0

您是否看过使用Fusion Tables进行“即时从kml中选择”类型的操作?这对你来说是一种选择吗? – Cups 2010-10-29 18:16:25

+0

您好@Cups我喜欢这个主意,但是您知道数据是否必须公开,因为我必须保持私密,谢谢 – mklfarha 2010-11-03 16:20:22

+0

不,您必须分享它才能从网络查询。 – Cups 2010-11-03 17:08:34

回答

1

首先,让我清楚的OpenLayers比谷歌地图更好,如果你想使用动态KML。接下来,我想给出一些我们将在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

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

+0

谢谢你的答复,我认为这个问题是一个失败的原因,我会给Openlayers一个尝试...我对性能感兴趣移动设备,你知道开放层是否支持它们(iOS,Android ...)吗?谢谢 – mklfarha 2011-08-25 04:09:23

+1

嗨mklfarha。 说实话,我是OpenLayers的狂热粉丝,实际上他们也支持智能手机/手持设备。顺便说一句,我正在使用iPhone,当然你可以查看它们,而最好的部分是开放源代码。 – zearth 2011-08-26 02:27:10