none
求救哦,折腾3天了,关于MultiScaleImage的远程图片读取问题 RRS feed

  • 问题

  •  

    各位大大,我现在要从MultiScaleTileSource派生一个类用来作MultiScaleImage的图片源,在继承的GetTileLayers方法内如果指定tileImageLayerSources的URL地址为本地图片的时候没有问题,一旦指定非本地地址的URI的时候,图片无法读取,没有任何报错信息,代码如下:

     

    使用本地图片时代码节选:

    Code Snippet

    Uri local = this.GetLocalPath();
                        if (local == null) { return; }
                        UriBuilder b = new UriBuilder(local);
                        string path2 = string.Format("/ClientBin/IMAGES/E{0}.PNG", tileLevel);
                        b.Path += path2;
                        tileImageLayerSources.Add(b.Uri);
                        return;

     

     

    使用外部地址是代码节选:

    Code Snippet

    UriBuilder uriBuilder = new UriBuilder(this.m_layer.Url);
                    string path = string.Format("/tile/{0}/{1}/{2}", adjustedTileLevel, tilePositionY, tilePositionX);
                    uriBuilder.Path += path;
                    uriBuilder.Query = string.Empty;
                   
                    tileImageLayerSources.Add(uriBuilder.Uri);

     

     

    其中m_layer的地址是外部服务器地址,在外部服务器的根目录已经放置了crossdomain.xml和clientaccesspolicy.xml文件,也就是说应该不是跨域的安全性问题,我用wireshark查看HTTP包记录发现对外部瓦片图片服务器地址没有任何的请求,包括请求瓦片服务器的跟目录下的clientaccesspolicy.xml文件的记录都没有

     

    知道的大大顶一下,谢谢了!

    2008年12月29日 3:41

答案

  •  八爪熊 写:

    MultiScaleImage 不用策略文件的,可以直接访问的给定Uri就可以了

    楼主代码截断太多了,看不太明白...

    MultiScaleTileSource 也没有ADD方法,那里出问题就不好判断了.

    非常的奇怪,之前的测试我全部是在SILVERLIGHT项目中加入testpage.html调试的,改成是用asp.net承载就OK了……

    2009年1月4日 10:41

全部回复

  • BTW,SILVERLIGHT版本是SILVERLIGHT2正式版

     

    2008年12月29日 3:43
  • MultiScaleImage 不用策略文件的,可以直接访问的给定Uri就可以了

    楼主代码截断太多了,看不太明白...

    MultiScaleTileSource 也没有ADD方法,那里出问题就不好判断了.

    2008年12月29日 8:29
    版主
  •  八爪熊 写:

    MultiScaleImage 不用策略文件的,可以直接访问的给定Uri就可以了

    楼主代码截断太多了,看不太明白...

    MultiScaleTileSource 也没有ADD方法,那里出问题就不好判断了.

    非常的奇怪,之前的测试我全部是在SILVERLIGHT项目中加入testpage.html调试的,改成是用asp.net承载就OK了……

    2009年1月4日 10:41