MS RFC 43:谷歌地图和虚拟地球API的直接切片生成¶
- 日期
2008年4月8日
- 作者
保罗·拉姆齐
- 联系方式
加利福尼亚州克利夫雷普潘的普拉姆西
- 最后编辑
2008/05/02
- 状态
2008/04/29通过-完成
- 版本
地图服务器5.2
概述¶
在mapserv cgi中提供一个简单的访问API可以使使用mapserver和Google地图以及虚拟地球用户界面对新用户来说更加容易。
技术解决方案¶
gmaps api定义了一个gtilelayer,可以用作覆盖图或基础图。gtilelayer支持gtilelayer选项tileurltemplate,它允许使用简单的URL模式访问tilelayer,该模式将Google的x/y/z坐标替换为请求:
http://host/tile?x={X}&y={Y}&z={Z}.png
请参见http://code.google.com/apis/maps/documentation/reference.html gtilelayer
对于MapServer,简单的URL模式为:
http://host/cgi-bin/mapserv?map=/the.map&layers=foo,bar&mode=tile&tilemode=gmap&tile={X}+{Y}+{Z}
更改将在LoadForm函数中为模式、接口、版本、x、y和z参数添加新的处理。与WMS接口一样,GMAPSAPI将要求指定proj,并且要访问的所有层都定义了投影的存在。谷歌X/Y/Z坐标将转换为“球面墨卡托”坐标,并输入范围。
结果将使一个带有MapServer地图的谷歌变得像:
var url = "http://host/cgi-bin/mapserv?";
url += "map=/the.map&";
url += "layers=parcels&";
url += "mode=tile&";
url += "tilemode=gmap&";
url += "tile={X}+{Y}+{Z}";
var myLayer = new GTileLayer(null,null,null,
{
tileUrlTemplate:url,
isPng:true,
opacity:0.5
}
);
var map = new GMap2(document.getElementById("map"));
map.addOverlay(new GTileLayerOverlay(myLayer));
带有MapServer地图的虚拟地球如下所示:
var url = "http://host/cgi-bin/mapserv?";
url += "map=/the.map&";
url += "layers=parcels&";
url += "mode=tile&";
url += "tilemode=ve&";
url += "tile=%4";
map = new VEMap("map");
map.LoadMap();
var tileSourceSpec = new VETileSourceSpecification( "myLayer", url );
tileSourceSpec.Opacity = 0.3;
map.AddTileLayer(tileSourceSpec, true);
TileMode为“gmap”的请求意味着:
“tile”参数的格式为:x y zoom
输出CRS将设置为“球形墨卡托”(EPSG:900913)
服务范围是全局的。顶部“缩放”级别(0)将有1个平铺。
“缩放”级别将从0向上运行
切片坐标的“Y”轴将从上到下运行
切片坐标的“X”轴将从左到右运行。
输出切片尺寸为256x256
每个缩放级别将以两个幂与父级和子级相关
tilemode为“ve”的请求包含以下内容:
“tile”参数将使用ve tile编号方案,例如“0312”。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/bb545006.aspx。
输出CRS将设置为“球形墨卡托”(EPSG:900913)
服务范围是全局的。顶层将有4个切片(0、1、2、3)。
输出切片尺寸为256x256
每个缩放级别将以两个幂与父级和子级相关
MapServer平铺模式API将 not 明确尝试解决元贴或交叉贴标签的问题。但是,将采取以下步骤尽量减少这些问题:
以后的阶段将渲染为比平铺稍大的目标,然后剪掉多余的边框像素。
受影响的文件¶
mapserv.c
maptile.c <new>
maptile.h <new>
将更新文档以反映新功能
MAPServer CGI参考
mapserver tile howto<new>
测试套件将被更新以使用新功能
Frank Warmerdam自愿这么做
向后兼容性问题¶
一个也没有。此功能是全新的,不需要更改现有行为。
投票历史¶
2008/04/29通过,史蒂文、丹尼尔姆、杰夫姆、史蒂文、汤克、佩里克森和阿塞法于+1。