3

我已经使用 MapServer 大约 2 个小时了,但是上手似乎有点复杂。所以这是我的问题
有没有办法让 mapserver 显示一个简单的整个世界地图,我可以在其中移动地图以查看世界的不同部分?
(从我目前学到的知识来看,它只是向您显示您通过 mapserv cgi 的地图,并且地图是静态的,不能移动!)

编辑:我仍然想知道我是否可以为整个世界或一个国家或其他任何地方制作一张简单的地图!我应该自己为所有内容编写 .Map 文件吗?

4

3 回答 3

5

好的,所以在查找并挣扎了一下之后,我找到了一些 JS 库来执行此操作,其中之一是Open Layers。您只需在 html 页面的开头引用它,例如:

<script src="http://openlayers.org/api/OpenLayers.js"></script>

然后您可以通过将 MapServer 数据如下绑定到 OpenLayers 初始化函数来为您的地图设置缩放和移动选项。

Var map, layer;

function init(){
    map = new OpenLayers.Map( 'map' );
    layer = new OpenLayers.Layer.MapServer( "NAME",
       "http://localhost/cgi-bin/mapserv", {map: 'PATH_TO_.MAP'} );
    map.addLayer(layer);
    map.zoomToMaxExtent();
}

在spatialhorizo​​ns.com中可以找到很多很酷的教程。
希望这可以帮助某人:)

于 2012-09-12T13:20:05.213 回答
1

MapServer 就是这样,一个 MAP SERVER。听起来您当前正在使用 cgi 脚本来显示托管地图。可以使用 WMS 客户端应用程序查看的 WMS 提供程序(如 MapServer)托管数据。有很多这样的应用程序。您将需要一个更复杂的客户端应用程序来连接到 MapServer 以执行更复杂的地图操作。

看看谷歌地球

NASA WorldWind

或者我还没有使用,但它看起来可能是最简单的,如果最不可靠的话。

于 2012-09-10T20:24:38.410 回答
1

首先 MapServer 是 GIS 服务器端技术。在我看来,放大/平移是客户端行为。

当我们查看用户在一个 Web 应用程序上平移/缩放的那一刻时,真正发生的是前端应用程序获取平移/缩放事件并调用 mapserver 以获取新地图返回客户端。

因此,您的传单、谷歌地图 API、Openlayers 等更有可能正在处理客户端移动的检测并将其解析为新的 getmap 请求并将请求发送到 mapserver 以获取响应。

您使用 get 请求从 MapServer 看到的内容是静态的,并且应该是这样。动态部分发生在客户端,从前端应用程序进行动态调用以进行这些静态调用。当客户端动态发送请求并从响应中刷新地图时,这是交互式的。

于 2016-09-08T19:45:29.233 回答