BingMapsSilverlight访问WMS地图

 

代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Maps.MapControl;
using Microsoft.Maps.MapControl.Core;

namespace BingMaps
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
            MapTileLayer tileLayer = new MapTileLayer();
            WMSTileSourse wmsts = new WMSTileSourse();
            tileLayer.TileSources.Add(wmsts);
            myMap.Children.Add(tileLayer);           
            this.myMap.Mode = new MercatorMode();
        }
        public class WMSTileSourse : TileSource
        {
            // Fields
            public const int TILE_SIZE = 0x100;
            // Methods
            public WMSTileSourse()
                : base("http://localhost:8080/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=GuangZhou&styles=&BBox={0},{1},{2},{3}&Width={4}&Height={4}&srs=EPSG:4326&format=image/png")
            {
            }

            public override Uri GetUri(int tilePositionX, int tilePositionY, int tileLevel)
            {
                int zoom = tileLevel;
                double num2 = 0.00135;
                double num3 = 0.00058;
                double num4 = TileToWorldPosX((double)tilePositionX, zoom) + num2;
                double num5 = TileToWorldPosY((double)tilePositionY, zoom) + num3;
                double num6 = TileToWorldPosX((double)(tilePositionX + 1), zoom) + num2;
                double num7 = TileToWorldPosY((double)(tilePositionY + 1), zoom) + num3;
                return new Uri(string.Format(base.UriFormat, new object[] { num4, num7, num6, num5, 0x100 }));
            }

            public static double TileToWorldPosX(double tile_x, int zoom)
            {
                return (double)((float)(((tile_x / Math.Pow(2.0, (double)zoom)) * 360.0) - 180.0));
            }

            public static double TileToWorldPosY(double tile_y, int zoom)
            {
                double num = 3.1415926535897931 - ((6.2831853071795862 * tile_y) / Math.Pow(2.0, (double)zoom));
                return (double)((float)(57.295779513082323 * Math.Atan(Math.Sinh(num))));
            }

        }
    }
}
注:地图我是用geoserver发布的
在geoserver可预览


 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值