【问题标题】:How do I add a KML to an OpenLayers map from a local source?如何从本地源将 KML 添加到 OpenLayers 地图?
【发布时间】:2015-09-20 16:49:41
【问题描述】:

我正在查看来自 openlayers 本身的 this 示例。您可以通过单击底部的“kml-layer.js”链接查看源代码。我这样做时的源代码如下所示:

var map = new OpenLayers.Map({
    div: "map",
    layers: [
        new OpenLayers.Layer.WMS(
            "WMS", "http://vmap0.tiles.osgeo.org/wms/vmap0",
            {layers: "basic"}
        ),
        new OpenLayers.Layer.Vector("KML", {
            strategies: [new OpenLayers.Strategy.Fixed()],
            protocol: new OpenLayers.Protocol.HTTP({
                url: "kml/lines.kml",
                format: new OpenLayers.Format.KML({
                    extractStyles: true, 
                    extractAttributes: true,
                    maxDepth: 2
                })
            })
        })
    ],
    center: new OpenLayers.LonLat(-112.169, 36.099),
    zoom: 11
});

这似乎只有在通过 HTTP 获取 kml 时才有效,但如果我想在自己处理地图时从自己的硬盘驱动器获取它怎么办?我似乎找不到太多关于如何执行此操作的文档,有人可以帮忙吗?

谢谢

【问题讨论】:

  • 这不是特定于 OpenLayers,这就是 Web 浏览器的一般工作方式——您只能通过 HTTP 请求数据。您需要在本地运行 HTTP 服务器以公开您保存数据的任意文件夹。
  • 谢谢,kryger,有没有一种快速简便的方法可以“欺骗”文件夹,使其表现得像 HTTP 服务器一样用于测试目的,还是比这更深入?
  • 为了在 localhost(即 127.0.0.1)上进行快速测试,您可以使用 Python 的内置 httpserver:stackoverflow.com/q/4351601/1240557。请注意,将其暴露给外界会很棘手,如果您最终计划将项目转移到生产环境中,则应该查看 Apache/nginx/lighttpd。

标签: javascript gis openlayers kml


【解决方案1】:

虽然此功能需要托管,但有一个小问题可以解决。如果数据是公开的,并且您不想使用 Python,则可以创建一个免费的 google 网站,然后将 KML 上传到那里并指向它的链接。这曾经对我有用。

【讨论】:

    猜你喜欢
    • 2013-01-28
    • 1970-01-01
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    • 2015-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多