我一直在使用MapServer大约2个小时,但开始时似乎有些复杂。
所以这是我的问题
有没有办法让mapserver显示一个简单的整个世界地图,我可以在其中移动地图以查看世界的不同部分?
(从我到目前为止学到的,它只是向你显示你传递mapserv cgi的地图,地图是静态的,无法移动!)
编辑: 我仍然想知道我是否可以为整个世界或国家或其他地方制作一张简单的地图!我应该写什么。我自己的地图文件?
答案 0 :(得分:5)
好的,所以在查找并努力工作之后,我找到了一些JS库来实现这一点,其中一个是Open Layers。你只需要在你的html页面的开头引用它,如:
<script src="http://openlayers.org/api/OpenLayers.js"></script>
然后您可以通过将MapServer数据绑定到OpenLayers init函数来为地图设置缩放和移动选项。
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();
}
在spatialhorizons.com中可以找到很多很酷的教程 希望这有助于某人:)
答案 1 :(得分:1)
MapServer只是一个MAP SERVER。听起来您正在使用cgi脚本来显示托管地图。 WMS提供程序,例如可以使用WMS客户端应用程序查看的MapServer主机数据。有很多这样的应用程序。您将需要一个更复杂的客户端应用程序来连接到MapServer,以执行更复杂的地图操作。
或者我还没有使用this,但看起来它可能是最简单的,如果最不可靠的话。
答案 2 :(得分:1)
第一个MapServer是GIS服务器端技术。在我看来,放大/平移是客户端行为。
当我们查看用户在一个Web应用程序上进行平移/缩放的那一刻,真正发生的事情是前端应用程序获取pan / zoom事件并调用mapserver以使新映射返回到客户端。
因此,您的传单,Google地图API,Openlayers等更有可能处理客户端移动的检测并将其解析为新的getmap请求,并将请求发送到mapserver以获取响应。
您使用get请求从MapServer看到的内容是静态的,并且假设是这样。动态部分发生在客户端,以便从前端应用程序进行动态调用以进行这些静态调用。当客户端动态发送请求并从响应中刷新映射时,这是交互式的。