头疼了好几天,在网上找了不少关于的该方面的文章,终于搞定了。微软也真是让人火大,OGC WMS标准都出台几年了,应用也很广了,Bing Maps API也好,Bing Maps Silverlight Control也好,竟然都不支持对它的访问!!!
好不容易搞定了,还是记下来笔记。
一、Bing Maps API访问WMS
我用的是Bing Maps + OpenLayers,直接参照MSDN就可以搞定,地址如下:
Integrating OGC Web Mapping Services:http://msdn.microsoft.com/en-us/library/cc161076.aspx
前台JavaScript这样写即可:
var tileSourceSpec = new VETileSourceSpecification(
'WMSBavariaGeo',
'WMSTileServer.ashx?id=%4&layer=Countries,Rivers,Country labels');
tileSourceSpec.Bounds = bounds;
tileSourceSpec.MinZoomLevel = 0;
tileSourceSpec.MaxZoomLevel = 19;
tileSourceSpec.Opacity = 0.4;
map.AddTileLayer(tileSourceSpec);
二、Bing Maps Silverlight Control访问WMS
这个搞定起来曲折多了。
最先找到的一种方法能够访问,但是返回的图片位置在屏幕随着ZoomLevel的改变上下漂移。因为偶急需要软件界面样图,所以该方法也曾解了燃眉之急,呵呵!我最先找到这种方法的地址如下:
bing silverlight control and wms bounding Box:http://cn.bing.com/community/forums/p/652190/9590047.aspx
虽然解了燃眉之急,但问题还是没有解决啊。继续搜索……,突然:
众里寻她千百度,蓦然回首,那人却在灯火阑珊处!!!
急度汗颜!!!………………
原来一直没有太注意的DeepEarth中就有类似的解决方案。原先总以为它跟微软的体系不同,应该不会兼容,所以没太在意。看了一个博客才知道,它现在正在逐渐改为对Bing Maps Silverlight Control的一种扩展,也颇好用!
最先找到的解决方案网址如下:
Overlay WMS on Google in Silverlight Bing:http://blog.sumbera.com/2010/02/25/overlay-wms-on-google-in-silverlight-bing/
然后直上CodePlex网址的DeepEarth WMS解决方案源码页:http://deepearth.codeplex.com/sourcecontrol/changeset/view/37324?projectName=deepearth#583728
修修改改,问题解决了,WMS返回的图像再也不发生“板块漂移”了,高兴啊!!!
进一步改进:因为上面的解决方案需要引用DeepEarth动态库,偶是追求完美的人,所以希望能将方案可以直接改写为独立的C#类,不用再引用其他动态库。因为一凡查找,让俺找到了有心人,人家早已经实现到了这一步。仔细一看网址,这就是偶最初参考的那个网址……
再次急度汗颜!!!………………
看样子最初还是没完全搞懂啊!!!
网址如下:Accessing WMS from Virtual Earth:http://vwl.nsquaredsolutions.com/Articles/VirtualEarth/AccessingWMSfromVirtualEarth.aspx
实现中还差一个函数,不要紧,MSDN上有:http://msdn.microsoft.com/en-us/library/bb259689.aspx
一切OK!淋浴中晨曦中一切看起来都那么的完美!^_^
感谢天!感谢地!感谢阳光照耀着大地!感谢明月让我们相遇!感谢所有先行的网友………………
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。