谷歌地图上的单个瓦片WMS图层v3
我正在尝试使用谷歌地图api将WMS图层添加到谷歌地图上。我可以用下面的代码瓷砖WMS层成功地做到这一点:谷歌地图上的单个瓦片WMS图层v3
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在视口上显示该图像。
Ground overlays解决了我的问题。据我所知,他们在地图上的指定坐标处显示图像。
不用创建google.maps.ImageMapType
的,我创建了一个新的地面覆盖层:
var overlay = new google.maps.GroundOverlay(
url,
imageBounds
);
overlay.setMap(gmap);
url
是我的WMS请求的URL和imageBounds
是描述图像的每个边的坐标的对象。
每当我平移或放大地图时,通过生成一个新的请求url,其中边界框参数(BBOX
)是地图的视口,我删除了前一个覆盖图并将其替换为新的覆盖图。
为了达到这个目的,我必须在处理地图平移事件的函数中存储覆盖层和生成我的WMS url的函数。
我仍然有一些小的投影问题需要解决,但这看起来像是一种有效的方法。
编辑:我实际上最终做出了一个自定义覆盖,以解决我的投影问题。这里有一个教程:https://developers.google.com/maps/documentation/javascript/customoverlays