google 地图 api v3 上的单个瓦片 WMS 图层
Single tile WMS layer on google maps api v3
我正在尝试使用 google 地图 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
是一个接受坐标和缩放参数的函数,returns 一个 url 到 WMS 请求。
但是,我需要向同一张地图添加另一个图层,该图层是单个图像,而不是图块。由于我无法在 google 地图 api 中找到单图块 WMS 图层的对象,我尝试设置一个图块地图,其中图块的大小与视口相同。我最终得到了这个结果:
它显然还是平铺的,而且没有正确居中。有没有办法强制 google 地图 API 根据 WMS 请求在指定位置绘制单个图块?
编辑:这是 google 地图渲染的 WMS 层与 WMS 请求返回的图像的比较:
WMS 图像与地图完美对齐,你可以在东海岸看清楚。我正在寻找一种使用 google 地图 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
我正在尝试使用 google 地图 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
是一个接受坐标和缩放参数的函数,returns 一个 url 到 WMS 请求。
但是,我需要向同一张地图添加另一个图层,该图层是单个图像,而不是图块。由于我无法在 google 地图 api 中找到单图块 WMS 图层的对象,我尝试设置一个图块地图,其中图块的大小与视口相同。我最终得到了这个结果:
它显然还是平铺的,而且没有正确居中。有没有办法强制 google 地图 API 根据 WMS 请求在指定位置绘制单个图块?
编辑:这是 google 地图渲染的 WMS 层与 WMS 请求返回的图像的比较:
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