ArcGIS Silverlight API 输出地图保存到图片

通过ArcGIS silverlight API实现输出地图到图片常用的有如下两种方式:向服务器端发送http请求、通过WriteableBitmap类在客户端直接对地图控件截图。

    向服务器端发送http请求方式 虽然可以做到输出指定矩形范围的地图、设置控件参考、支持Png/jpg/bmp等图片格式,但这种方式每次只能对单一的地图服务进行截图,换句话讲,当我们叠加了多个地图服务时没有办法将输出区域内所有的地图服务一起输出;这种方式也不支持对Graphiclayer图层输出。

选择地图输出区域

服务器端返回的图片

 

private void ExportImage(ESRI.ArcGIS.Client.Geometry.Geometry extent)

        {

            try

            {

                Envelope sEnv = extent.Extent;

                StringBuilder sUrl = new StringBuilder();

                sUrl.Append("http://lingy/ArcGIS/rest/services/dxmap/MapServer");

                sUrl.Append("/Export?");

                sUrl.Append("f=json");

                sUrl.Append(String.Format("&bbox={0},{1},{2},{3}", sEnv.XMin, sEnv.YMin, sEnv.XMax, sEnv.YMax));

                sUrl.Append("&format=");

                sUrl.Append("png");

                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(sbUrl.ToString());

                request.BeginGetResponse(new AsyncCallback(ExportCall), request);

            }

            catch (Exception ex)

            {

                MessageBox.Show("导出图片失败:" + ex.ToString());

            }

        }

        private void ExportCall(IAsyncResult asynchronousResult)

        {

            this.Dispatcher.BeginInvoke(delegate()

            {

                try

                {

                    HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;

                    HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);

                    Stream stream = response.GetResponseStream();

                    StreamReader reader = new StreamReader(stream);

                    string result = reader.ReadToEnd();

                    string href = result.Split(new char[] { '"' })[3];

                    linkImageResult.NavigateUri = new Uri(href, UriKind.Absolute);

                }

                catch (Exception ex)

                {

                    MessageBox.Show("导出图片失败:" + ex.ToString());

                }

            });

        }

 

WriteableBitmap可以在客户端直接对地图控件截图保存,保存的图片格式需要自己编写格式编码。

 

  通过WriteableBitmap截图源码:

   

private void button1_Click(object sender, RoutedEventArgs e)

        {

            try

            {

                cMapExportToImage imageExporter = new cMapExportToImage();

                bool bResult = imageExporter.ExportPNG(mainMap as UIElement);

                string strResult = bResult ? "成功!" : "失败!";

                MessageBox.Show("图片导出" + strResult);

            }

            catch (Exception pEr)

            {

                string msg = pEr.Message;

            }

        }

 

cMapExportToImage、cPngEncoder.cs类文件详见下面附件

cMapExportToImage.txt(2.67 KB)

cPngEncoder.txt(8.36 KB)

转至:http://www.gisall.com/html/72/124272-5867.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值