繁体   English   中英

谷歌地图api v3上的单个瓦片WMS图层

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM