silverlight+newmap

本文介绍了一种基于WMTS标准的地图服务实现方法。通过自定义WMTS图块加载逻辑,文章详细展示了如何设置图块分辨率层级、图块信息及如何获取图块URL。该方法适用于需要自定义地图图块加载的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using ESRI.ArcGIS.Client;
using ESRI.ArcGIS.Client.Geometry;
using System.Text;
using ESRI.ArcGIS.Client.Toolkit.DataSources;

namespace sdhbgis.Dal
{
    public class WMTSTileNewMap : TiledMapServiceLayer
    {
        // WMTS 调用地址
        private string _url = "http://222.1.1.1/newmap/ogc/TIANDITU/DZVectorAnnoMap/wmts/";
        private string _layer = "DZVectorMap";

        public string Layer1
        {
            get { return _layer; }
            set { _layer = value; }
        }
        // private Extent _fullExtent = new Extent(115.755718613879,36.4084387897639,117.600377956462,38.0106631803602, _spatialReference);
        // Properties
        public string Url
        {
            get
            {
                return this._url;
            }
            set
            {
                this._url = value;
            }
        }


        public override void Initialize()
        {
            ESRI.ArcGIS.Client.Geometry.Envelope envelope = new ESRI.ArcGIS.Client.Geometry.Envelope(115.755718613879, 36.4084387897639, 117.600377956462, 38.0106631803602);
            envelope.SpatialReference = new SpatialReference(4490);
            this.FullExtent = envelope;
            base.SpatialReference = new SpatialReference(4490);
            Lod[] lodArray = new Lod[12];
            Lod lod = new Lod();
            Lod lod0 = new Lod();
            lod0.Resolution = 0.00274658203125;
            lodArray[0] = lod0;
            Lod lod1 = new Lod();
            lod1.Resolution = 0.001373291015625;
            lodArray[1] = lod1;
            Lod lod2 = new Lod();
            lod2.Resolution = 0.0006866455078125;
            lodArray[2] = lod2;
            Lod lod3 = new Lod();
            lod3.Resolution = 0.00034332275390625;
            lodArray[3] = lod3;
            Lod lod4 = new Lod();
            lod4.Resolution = 0.000171661376953125;
            lodArray[4] = lod4;
            Lod lod5 = new Lod();
            lod5.Resolution = 0.0000858306884765625;
            lodArray[5] = lod5;
            Lod lod6 = new Lod();
            lod6.Resolution = 0.00004291534423828125;
            lodArray[6] = lod6;
            Lod lod7 = new Lod();
            lod7.Resolution = 0.000021457672119140625;
            lodArray[7] = lod7;
            Lod lod8 = new Lod();
            lod8.Resolution = 0.0000107288360595703125;
            lodArray[8] = lod8;
            Lod lod9 = new Lod();
            lod9.Resolution = 0.00000536441802978515625;
            lodArray[9] = lod9;
            Lod lod10 = new Lod();
            lod10.Resolution = 0.000002682209014892578125;
            lodArray[10] = lod10;
            Lod lod11 = new Lod();
            lod11.Resolution = 0.0000013411045074462890625;
            lodArray[11] = lod11;


            TileInfo info = new TileInfo();
            // info.Height = 256;
            //info.Width = 256;
            // MapPoint point = new MapPoint(-180.0, 90.0);
            //// point.SpatialReference = new SpatialReference(4610);
            //  info.Origin = point;
            info.SpatialReference = new SpatialReference(4490);
            info.Height = 256;
            info.Width = 256;
            // info.format = "image/png";
            info.Origin = new MapPoint(-180, 90);
            info.Lods = lodArray;
            base.TileInfo = info;
            base.Initialize();
        }


        // 重写方法
        public override string GetTileUrl(int level, int row, int col)
        {
            String url = Url
            + "?SERVICE=WMTS&VERSION=1.0.0&REQUEST=GetTile" + "&LAYER=" + Layer1 + "&STYLE=Default" + "&FORMAT=image/png" + "&TILEMATRIXSET=TileMatrixSet_0"
            + "&TILEMATRIX=" + level
            + "&TILEROW=" + row
            + "&TILECOL=" + col;
            return url;
        }


    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔跑的熊猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值