【问题标题】:Dynamic kml google maps动态 kml 谷歌地图
【发布时间】:2010-10-29 17:19:16
【问题描述】:

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

类似于谷歌地球但在谷歌地图中(缩放部分)

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

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

我知道这可以用 JavaScript 完成

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

但我想避免这种情况有什么办法吗?

谢谢

【问题讨论】:

  • 您是否考虑过使用 Fusion Tables 进行这种“从 kml 中动态选择”类型的操作?这对你来说是一个选择吗?
  • 嗨@Cups 我喜欢这个主意,但你知道数据是否必须公开,因为我必须保密,谢谢
  • 不,您必须共享它才能从网络上查询。
  • 我是这么想的,但我做不到 :( 还是谢谢你

标签: php javascript google-maps kml


【解决方案1】:

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

【讨论】:

  • 我应该在 10 小时前听你的。
  • @Codism :'(,听起来很粗糙。在发布此内容之前,我也很难学到这一点。有时休息一下然后回来有助于获得新的视角。
【解决方案2】:

首先,让我明确一点,如果您想使用动态 KML,OpenLayers 比 Google Maps 更好。接下来,我想给出一些我们将在 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>

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

最后但同样重要的是,我希望我的回答对你来说还不算太晚。

【讨论】:

  • 感谢您的回复,我认为这个问题是一个失败的原因,我会尝试 Openlayers... 我对移动设备上的性能感兴趣,您知道开放层是否支持它们( iOS,安卓...)?谢谢
  • 嗨,mklfarha。老实说,我是 OpenLayers 的狂热粉丝。实际上它们也支持智能手机/手持设备。顺便说一句,我正在使用 iPhone。您当然可以查看它们。最棒的是,它们是开源的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-10
相关资源
最近更新 更多