[英]Single tile WMS layer on google maps api v3
我正在尝试使用google maps api将WMS图层添加到Google地图地图。 我能够使用以下代码成功地使用平铺的WMS图层:
var tileSize = new google.maps.Size(256, 256);
var options = {
'getTileUrl': googleGetTileUrlFunction,
'tileSize': tileSize,
'isPng': true
};
var googleWMSLayer = new google.maps.ImageMapType(options);
googleGetTileUrlFunction
是一个函数,它接受坐标参数并缩放并返回一个URL到WMS请求。
但是,我需要在同一个地图中添加另一个图层,其中图层是单个图像,而不是图块。 由于我在google maps api中找不到单瓦WMS图层的对象,因此我尝试设置一个平铺地图,其中图块的大小与视口大小相同。 我最终得到了这个结果:
它显然仍然是平铺的,并且它没有正确居中。 有没有办法强制谷歌地图API从WMS请求在指定位置绘制单个图块?
编辑:这是谷歌地图渲染的WMS图层与WMS请求返回的图像的比较: WMS图像与地图完美对齐,您可以查看东海岸以清楚地看到它。 我正在寻找一种方法,使用google maps api在视口上显示该图像。
地面覆盖解决了我的问题。 据我所知,它们在地图上的指定坐标处显示图像。
我没有创建google.maps.ImageMapType
,而是创建了一个新的Ground Overlay:
var overlay = new google.maps.GroundOverlay(
url,
imageBounds
);
overlay.setMap(gmap);
url
是我的WMS请求的url, imageBounds
是描述图像每一侧坐标的对象。
每次平移或放大地图时,我都会删除之前的叠加层并将其替换为新的叠加层,方法是生成一个新的请求网址,其中边界框参数( BBOX
)是地图的视口。
为了实现这一点,我必须保存覆盖和生成我的WMS URL的函数,该函数可以在处理地图平移事件的函数中访问。
我仍然需要修复一些小的投影问题,但这看起来像是一种有效的方法。
编辑:我实际上最终制作了一个自定义叠加来修复我的投影问题。 这里有一个教程: https : //developers.google.com/maps/documentation/javascript/customoverlays
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.