ArcGIS Silverlight API 输出地图保存到图片
分享
通过ArcGISsilverlight API实现输出地图到图片常用的有如下两种方式:向服务器端发送http请求、通过WriteableBitmap类在客户端直接对地图控件截图。
向服务器端发送http请求方式 虽然可以做到输出指定矩形范围的地图、设置控件参考、支持Png/jpg/bmp等图片格式,但这种方式每次只能对单一的地图服务进行截图,换句话讲,当我们叠加了多个地图服务时没有办法将输出区域内所有的地图服务一起输出;这种方式也不支持对Graphiclayer图层输出。
选择地图输出区域
服务器端返回的图片
WriteableBitmap可以在客户端直接对地图控件截图保存,保存的图片格式需要自己编写格式编码。
通过WriteableBitmap截图源码:
文章来源:http://blog.csdn.net/sydbc/article/details/17247459
向服务器端发送http请求方式 虽然可以做到输出指定矩形范围的地图、设置控件参考、支持Png/jpg/bmp等图片格式,但这种方式每次只能对单一的地图服务进行截图,换句话讲,当我们叠加了多个地图服务时没有办法将输出区域内所有的地图服务一起输出;这种方式也不支持对Graphiclayer图层输出。
选择地图输出区域
服务器端返回的图片
privatevoid ExportImage(ESRI.ArcGIS.Client.Geometry.Geometry extent)
{
try
{
EnvelopesEnv = extent.Extent;
StringBuilder sUrl = newStringBuilder();
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(newAsyncCallback(ExportCall), request);
}
catch (Exception ex)
{
MessageBox.Show(“导出图片失败:“ + ex.ToString());
}
}
privatevoid ExportCall(IAsyncResult asynchronousResult)
{
this.Dispatcher.BeginInvoke(delegate()
{
try
{
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
Streamstream = response.GetResponseStream();
StreamReader reader = newStreamReader(stream);
stringresult = reader.ReadToEnd();
stringhref = result.Split(newchar[] { “”" })[3];
linkImageResult.NavigateUri= newUri(href, UriKind.Absolute);
}
catch (Exception ex)
{
MessageBox.Show(“导出图片失败:“ + ex.ToString());
}
});
}
WriteableBitmap可以在客户端直接对地图控件截图保存,保存的图片格式需要自己编写格式编码。
通过WriteableBitmap截图源码:
privatevoid button1_Click(object sender, RoutedEventArgs e)
{
try
{
cMapExportToImageimageExporter = newcMapExportToImage();
bool bResult =imageExporter.ExportPNG(mainMap asUIElement);
string strResult =bResult ? “成功!“ : “失败!“;
MessageBox.Show(“图片导出“ +strResult);
}
catch (Exception pEr)
{
string msg =pEr.Message;
}
}
文章来源:http://blog.csdn.net/sydbc/article/details/17247459
0 个评论
推荐内容
- ArcGIS Pro 2.4向独立server发布服务步骤
- Linux上安装ArcGIS Enterprise超详细教程——以Redhat7.2上安装ArcGIS Enterprise 10.5为例
- ArcGIS for Server 10.x 许可授权手册
- Portal for ArcGIS 10.X许可授权手册 (Windows版)
- arcgis server 无法手动删除切片
- ArcGIS for Server内置JS Viewer的离线部署和配置
- Linux上安装ArcGIS for Server超详细教程——以Redhat6.5上安装ArcGIS for Server 10.3.1为例
- 如何创建Geometry Service?
- 地图服务优化策略
相关问题
- 如何优雅的使用ArcGIS知乎?
- 建设ArcGIS知乎平台的目和意义?
- ArcGIS知乎社区改进意见征集
- 有谁知道哪里可以免费获取各省市地图数据呢,包括详细的shape文件数据
- 【抽奖结果已出】ArcGIS知乎社区活动 之 你不知道的地理空间革命【转发分享有奖】【附奖品寄送照片】
- 苹果系统下可以使用arcgis 吗?
- arcgis版本兼容性
- 请问ArcGIS适合在局域网内用javaweb做二次开发吗?
- 请问大神们,怎么用ArcGIS做城镇间经济联系强度的图?
- ArcGIS如何求栅格图像的“质心”
- 在Visual studio 2015 中使用 Arcgis API for JavaScript v3.16 如何实现代码智能提示?