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