簡體   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