新增、移除圖層
[info] 小提示:
程式碼連結:我是連結
對MapServer來說,2D的圖層中有影像圖層、向量圖層及自畫圖層三種類型,但對client來說都是取得圖片,差別在於使用 WMTS 或 WMS 去取得。
使用下面這段程式碼,可以新增來自於MapServer經由WMTS取得的一張2D影像圖層
var host = " http://127.0.0.1:8080/wmts?"; //以本機MapServer為例。
var layerName = "範例影像圖層";
var wmtsUrl = host + "Layer=" + layerName + "&style=default&TileMatrixSet=EPSG:3857&Service=WMTS&Request=GetTile&Version=1.0.0&Format=image/png&TileMatrix={TileZ}&TileCol={TileC}&TileRow={TileR}";
var Patterns = [wmtsUrl];
var im = mapDoc.NewTileMapLayerByMatrixSet("OviewEarth",Patterns, m, -1);
也可以讀其他來源的影像圖層,比如說使用BING、TGOS...等。
var wmtsUrl = "http://ecn.t0.tiles.virtualearth.net/tiles/h{QuadKey}?g=3649&n=z";
var Patterns = [wmtsUrl];
var im = mapDoc.NewTileMapLayerByMatrixSet("BING_MAP", Patterns, m, -1);
另外也能夠新增 WMS 圖層
var layerName = "範例向量圖層";
var wmsId = mapDoc.NewWMSLayer("Vector", host + "/wms?", [layerName], ENUM_IMAGE_FORMAT.PNG);
WMS須注意使用的格式,如果是像JPEG那樣沒有Alpha的格式,會導致透明部分以白色顯示。 這裡則使用兩種不同來源的圖層,需要注意引入順序,如沒有指定插入索引,先加入的會在下層(被蓋過)
var layerName = "範例影像圖層";
var wmtsUrl = host + "/wmts?Layer=" + layerName + "&style=default&TileMatrixSet=EPSG:3857&Service=WMTS&Request=GetTile&Version=1.0.0&Format=image/png&TileMatrix={TileZ}&TileCol={TileC}&TileRow={TileR}";
var Patterns = [wmtsUrl];
var im = mapDoc.NewTileMapLayerByMatrixSet("OviewEarth", Patterns, m, -1);
var layerName = "台灣影像圖層";
var wmtsUrl = host + "/wmts?Layer=" + layerName + "&style=default&TileMatrixSet=EPSG:3857&Service=WMTS&Request=GetTile&Version=1.0.0&Format=image/png&TileMatrix={TileZ}&TileCol={TileC}&TileRow={TileR}";
var Patterns = [wmtsUrl];
var im = mapDoc.NewTileMapLayerByMatrixSet("OviewTW", Patterns, m, -1);
[info] 小提示:
上述例子中各個URL中有以下幾個指定字,都是以大括弧包圍。
O’view TGOS用 BING用 {TileC} {TGOS_X} {QuadKey} {TileR} {TGOS_Y} - {TileZ} {TGOS_S} - 實際上,如果需要使用bing map作為來源的話,內部已經建立URL相關格式,可以參考附錄:URL關鍵字章節
新增後可以移除
mapDoc.RemoveLayer(im);
也可以使用名稱來移除
mapDoc.RemoveLayerByName("OviewTW");
或是想要移除所有的圖層
mapDoc.RemoveAllLayers();