拥抱新的.Net开发框架,WPF开发者如何向.Net迁移


ArcGIS Runtime 10.2版本中,将WindowsPhone 、WindowsStore以及WPF三大SDK整合成了一个全新的SDK——ArcGISRuntime SDK for Microsoft .Net Framework,简称.Net SDK,同时现有的WPF SDK可以继续使用,但后续会停止更新。因此,Esri建议WPF开发者们向.Net阵营迁移。

顾名思义,新的.NetSDK面向微软的.Net框架,以前的WPF、Windows Phone以及Windows Store平台的开发者们无需再分别下载安装包,直接下载.Net SDK就可以搞定。如何入手新的SDK?WPF已有的开发经验在新的SDK中适用吗?WPF项目如何迁移?本博文将为你提供几个超级实用的tips。

 

开发者们第一个关心的问题可能是,我在WPF开发中积累的诸多经验和技能,是否能用在新的平台中?答案是很鼓舞人心的,那就是.Net SDK开发的技巧与WPF非常接近,你甚至可以将.Net SDK中的Windows Desktop API看成是对现有WPF API的升级,它们拥有许多相同的概念,甚至许多实际的类和类成员的名字都一样。不过,.Net SDK毕竟是基于最新的.NET框架,并加入了许多最新的或者流行的模型和实践在里面,比如MVVM模型和异步处理任务模型等,这意味着它们之间也有些小区别。


第二个可能关心的问题是,我需要将我现有的所有WPF项目都迁移到.Net平台上吗?答案也许是不用。迁移会导致一些问题,你必须单独考虑每个app,评估它们是否要用到新平台中的一些新特性。那些无需使用新特性的app无需迁移,直接使用现有的WPF API即可,我们在未来一段时间仍会继续对现有的WPF SDK提供技术支持,帮助大家解决功能、性能及与ArcGIS的兼容性等问题。

如果app需要使用到新特性,那么最好的办法就是进行迁移。以下是一些实用的迁移方法,让大家可以更加方便的从10.2的WPF SDK迁移到.Net SDK下。

1、使用加速显示模式

1)何为加速显示?

在现有的WPF SDK中,你可以选择使用GIS技术进行优化了的地图渲染引擎,来显示整个地图,或者只显示某个图层的特定子图层,这种渲染引擎被称为“加速显示”。尽管它也可以用来渲染其它的业务图层或者底图,但是用它来展示海量的graphic或者feature是再好不过的了。在所有的ArcGIS Runtime SDK中都有这个地图渲染引擎。在新的.Net版本中,地图被重新设计,使用了高性能的“加速显示”渲染模式来渲染整个地图。

 

2)我如何使用加速显示?

想采用“加速显示”来渲染整个地图需要用到Map类的UseAcceleratedDisplay属性,这是推荐的途径,相应的,可以使用AcceleratedDisplayLayers group layer实现对图层的特定子图层使用“加速显示”渲染,任何位于该grouplayer下的图层都将使用“加速显示”渲染技术,但是记住,你只能在map中添加一个AcceleratedDisplayLayers实例。

下列示例代码是使用WPF的标准渲染功能:

<esri:Map x:Name="MyMap" WrapAround="True">

    <esri:ArcGISTiledMapServiceLayer ID="MyLayer"

       Url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"/>

    <esri:GraphicsLayer ID="MyGraphics" Renderer="{StaticResource MySimpleRenderer}"/>

</esri:Map>

下列代码使用的是ArcGIS Runtime的加速显示渲染功能,使用了UseAcceleratedDisplay属性:

<esri:Map x:Name="MyMap" UseAcceleratedDisplay="True" WrapAround="True">
    <esri:ArcGISTiledMapServiceLayer ID="MyLayer" 
       Url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"/>
    <esri:GraphicsLayer ID="MyGraphics" Renderer="{StaticResource MySimpleRenderer}"/>
</esri:Map>

 

3)为何加速显示模式不是WPF SDK的默认渲染模式?

这是因为,在我们将ArcGISRuntime组件加入到WPF API,并将其发布成为ArcGIS Runtime SDK for WPF之前,WPF API已经是一个独立的产品了,已经不能很好的立即集成加速显示模式,因此我们在WPF中提供了两种渲染模式(WPF原有的普通模式和新的加速显示模式),并将加速显示模式设置为可选的而不是默认的。

4)WPF SDK中使用加速显示会有哪些问题?

你可能遇到的最大的问题是对自定义的XAML符号的支持,因为WPF中的加速显示模式只支持标准的esri symbol和渲染类型(如SimpleMarkerSymbolSimpleRenderer)。而新的.Net SDK使用的是优化了的ArcGISRuntime地图渲染引擎,因此不支持自定义的XAML符号,还有其它的图层和子图层类型不支持加速显示渲染(具体请参见ReleaseNotes),不过大部分都是支持的。另外新的SDK中提供了CompositeSymbol复合符号类型,用户可以通过它来创建自定义的符号。

 

2、异步处理使用WPF SDK 10.2支持的任务模型

1)什么是基于任务的异步处理模型?

编写高性能、响应快的应用程序需要使用基于任务的异步处理模型来应对耗时操作,或者是在单一线程里同时运行多个操作的情况也需要使用到它。管理多线程是件复杂的事情,因此,.Net 4.0中,微软引进了Task(任务)模型来简化多线程应用程序的处理,使得开发者可以使用.Net Task来异步执行代码而不需要去管到底是哪个线程在执行任务。Task同时也提供了许多极好的控制方式,来监听执行失败和执行成功的情况,使得它使用起来非常方便:你只要等待任务执行完成即可。当有多个Task需要执行时,需要明确它们的执行顺序,或者可以等待所有Task都执行完毕后再执行某段代码。C# 5.0版本中更是提供了“async”、“await”等关键词来简化Task的使用。有关async task的更多内容请参考AsynchronousProgramming with Async and Await

 

2)在WPF API中这些Task都藏在了哪里?

ArcGIS Runtime SDK 10.2 for WPF中最引人注目的新特性之一,就是任何异步的方法都会返回一个Task实例来表示一个操作的执行。10.2之前,API同时提供了同步和异步的方法来处理任何可能潜在的耗时操作,在10.2中,这些操作新增了一个后缀为TaskAsync的方法,如QueryTask类有一个同步执行的方法“Execute”,同时其异步执行的方法名在10.2之前为“ExecuteAsync”,在10.2中就变成了“ExecuteTaskAsync”

 

3)我如何使用新的异步处理方法?

在.Net 4.0中使用新的异步处理方法理论上无需任何辅助软件,然而,要想实现新的Task模型的所有功能,并使用“async”和“await”关键字,你必须使用.Net 4.5和VisualStudio 2012及以上的版本,如果非要在4.0中使用,你同时需要下载MicrosoftAsync NuGet包。

 

如果你决定使用Task模型,你需要对你的代码进行一定的修改,这些修改包括取消代理的声明(如命名的event handlers, 内联匿名方法和lambda表达式),并使用await关键字来调用Task的相关方法。异步方法的调用必须包含try/catch语句,因为Task在执行失败时,更有可能抛出异常而不是执行Failed事件。将捕获异常的代码放在catch语句中,这样做有两个好处:可以让你的代码更加简洁和稳定。

 

下面这两个例子就分别使用传统的QueryTask和10.2中的新的Task功能。

第一个例子使用基于事件的模式,使用内联lambda表达式来处理任务执行成功和失败,这种方法下,代码显得冗余,逻辑又难以理解,在使用lambda表达式时,又要切记:必要时要移除你之前注册过的event handler,以免它们被多次调用,这会使得对代理的声明变得复杂,让代码书写更费事。

QueryTask queryTask = new QueryTask
    ("http://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer/3");
 
// 使用内联Lambda表达式来处理执行成功事件queryTask.ExecuteCompleted += (obj, queryEventArgs) =>
{
    // Do something with results...
    GraphicsLayer graphicsLayer = MyMap.Layers["MyGraphics"] as GraphicsLayer;
    graphicsLayer.Graphics.AddRange(queryEventArgs.FeatureSet.Features);
};
 
// 使用内联Lambda表达式来处理执行失败事件
queryTask.Failed += (obj, taskFailedeventArgs) =>
{
    if (taskFailedeventArgs.Error != null)
        MessageBox.Show(taskFailedeventArgs.Error.Message);
};
 
//在声明了内联的event handler之后调用ExecuteAsync方法 queryTask.ExecuteAsync(new Query()
{
    Where = "1=1",
    ReturnGeometry = true,
    OutSpatialReference = MyMap.SpatialReference
});

 

第二个例子使用新的QueryTask.ExecuteTaskAsync方法,它返回一个“awaitable”任务,其Result属性包含了一个QueryResult实例,返回Task<QueryResult>类型的参数。使用“await”关键字可以调用异步方法,并使得代码暂停执行直到异步任务执行完成返回结果。这种方式的妙处之一,就是看起来代码是顺序执行的,大大增强了代码的可读性。记住,任务执行失败时会抛出异常而不是触发“failed”事件,因此,在合适的地方使用try/catch语句非常重要。

QueryTask queryTask = new QueryTask
    ("http://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer/3");
 
try
{
    //使用await关键字来调用ExecuteTaskAsync
    QueryResult queryResult = await queryTask.ExecuteTaskAsync(new Query()
    {
        Where = "1=1",
        ReturnGeometry = true,
        OutSpatialReference = MyMap.SpatialReference
    });
 
    // Do something with results...
    GraphicsLayer graphicsLayer = MyMap.Layers["MyGraphics"] as GraphicsLayer;
    graphicsLayer.Graphics.AddRange(queryResult.FeatureSet.Features);
}
catch (Exception ex)
{
 // Handle exception
}

 

在WPF SDK 10.2版本中,异步处理支持基于事件( event-based)和基于任务(Task-based)两种模型,但在新的.Net SDK中只支持基于任务的模型,因此WPF开发者在异步处理的时候采用任务模型不仅可以简化代码,还可以非常方便的进行项目迁移。

 

3、使用“using”指令而不是完全限定的命名空间

这是一个简单的小提示,也许你早就开始这么做了,但是它的确值得注意,它会节省你很多时间。新的Windows Desktop API的许多类型与现有的WPF API中的类型具有相同的类名,但是它们使用不同的命名空间,因此,使用using指令可以去掉ESRI.ArcGIS.Client.*程序集,而加上Esri.ArcGISRuntime.*程序集,这样,迁移之后更新一下命名空间,重新编译一下代码即可。在现实中,这两个API中会有各种差异,使得你的代码必须经过适当的修改才能编译成功,但采用这个建议肯定能大幅提高你代码迁移的速度。更新信息请参考usingDirective (C# Reference)

在您的代码中,只要有可能,我们强烈推荐你避免使用完全限定的命名空间而使用using指令,如:

using ESRI.ArcGIS.Client.Tasks;
namespace MyNamespace
{
    public partial class MainWindow : Window
    {
        QueryTask myQueryTask = new QueryTask();
        …
    }
}

当项目需要迁移到新的WindowsDesktop API中时,你只需要简单的修改命名空间即可:

using Esri.ArcGISRuntime.Tasks.Query;
namespace MyNamespace
{
    public partial class MainWindow : Window
    {
        QueryTask myQueryTask = new QueryTask();
        …
    }
}

 

如果您正在计划将一个WPFSDK开发的项目迁移到新的.Net SDK中的话,使用上面3个小技巧能够使得你迁移更加容易,迁移后的代码更加工整,新的SDK已经发布,我们诚恳的期待您花费一点时间来试用一下,相信它能带给你更好的开发体验。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
一个牛人提供的GIS源码(很好 下面文字非本人所写,文件提到的下载的东西我全部放包里了。 最后的礼物:校园多媒体系统和校园WEBGIS系统 为什么说是最后的礼物,大概是因为我突然想这个blog不更了。为什么呢?可能是今天晚上喝多了酒,呵呵,原因等下一篇中也许会阐述,同时我会对这个blog的文章等做个总结。其实,这两个东西至少我暂时是不大想放出来的,只是觉得反正这里也不更了,仅仅将这些东西作为礼物吧,再说毕竟这些东西太过于菜菜了。还是先来介绍下最后的两个礼物吧: 校园多媒体系统: 这个大概是今年过年后做的东西了,是给师弟做毕业设计用的。应该讲这也仅仅是电子地图查询系统的更而已,没有太大的特色,只是做了些比较花的功能而已。 特色一:系统采用了双重数据库,对于如果无法连接SQL Server数据库的情况将提供备用的ACCESS数据库支持。 特色二:系统采用了实时在线更的方法对软件进行升级,升级仅仅需要设置好服务端以及更文件列表等即可。 特色三:界面上有所创,吸取Google的WEB地图的界面,对部分控制条进行显示和隐藏。可以看我以前的截图,做了个界面,请大家PP http://www.cnblogs.com/Tangf/archive/2006/03/16/351640.html 特色四:简单的加密方式也可以学习下。这个加密方式可以对移植性进行控制。 特色五:移植性强,许多东西没有写死,只需要改变设置文件、启动画面文件、地图文件和数据库文件即可成为一套全的系统。 开发环境:Visual Basic 6.0,MAPX5.02中文版,ACCESS,SQL SERVER 2000,AutodeskExpressViewe3.1、Windows Media Player 9.0等。 下载地址:http://www.cnblogs.com/Files/Tangf/Campus_Multimedia_Infomation_System_Source.rar 压缩包中为源代码和生成的程序,同时还赠送了一个基于SF6的MAPX打包文件以及整个校园的地图文件,提供了开放环境中需要的插件支持文件(System目录下),同时由于文件大小原因,删除了许多Img目录下的图片并且在数据库中删除了部分Img记录(不然会出错),仅保留了1号楼的图片供参考。 相关或参考文章: 电子地图查询系统_v1.0_源代码(VB6+MAPX5) http://www.cnblogs.com/Tangf/archive/2006/02/15/331375.htmlGoogle ┕电子地图查询系统源代码:http://www.cnblogs.com/Files/Tangf/MapSearch_Source.rar 用SetupFactory打包MapX(带打好的包和打包文档以及录像) http://www.cnblogs.com/Tangf/archive/2006/02/05/325842.html ┕打包以及文档和录像:http://www.cnblogs.com/Files/Tangf/Mapx_Pack.rar 再谈MAPX打包以及MAPX的安装 http://www.cnblogs.com/Tangf/archive/2006/05/31/414361.html 校园WEBGIS: 这个应该是05年的时候做的毕业设计,用超图的Supermap IS 2003+SQL Server 2000建立的一个比较的简单的系统,只是玄乎了下就变的有点意思了,甚至也有点学习或者创的意思。 加上上次发布的论文部分,这样整个系统也算是补全了。原来论文部分请见:校园WebGIS开发与实践(论文部分) http://www.cnblogs.com/Tangf/archive/2006/01/13/316918.html 特色一:提出了地图接口的概念(其实当时的想法是将网络上的所谓企业标注移植到了这个系统上,只是这个功能免费提供给了学校的部门使用)。 特色二:部分搜索功能是通过搜索SQL输出XML来实现。 特色三:系统已经详细到每个楼房楼层的办公室以及办公室内的电话和教师名单、教学楼的班级以及课程表、宿舍的成员组成联系方式等。 特色四:空间数据库和属性数据库通过SQL Server的视图功能实现关联。 开发环境:Supermap Desktop 2003(地图编辑工具),Supermap IS 2003(GIS服务端),ASP+SQL Server 2000(开发语言和数据库环境),IIS 5.0(WEB服务端),AutodeskExpressViewe3.1(Autodesk公司发布的浏览DWF文件的的客户端插件)等。 安装方法请见论文的附录部分,请不要再询问如何安装。 由于当时将每个楼层平面图的CAD数据也同时存入了SQL Server,所以导致数据库文件过于庞大,大概90M多,经过压缩大概21.8M左右。由于文件过大没有地方存放,所以这部分也不提供。所以可能会导致系统功能无法实现。数据库不提供,请不要索取。 下载地址:http://www.cnblogs.com/Files/Tangf/Campus_WebGIS_Source.rar 压缩包中为WEB主程序,以及答辩用的演讲稿。 相关或参考文章: 校园WebGIS开发与实践(论文部分) http://www.cnblogs.com/Tangf/archive/2006/01/13/316918.html ┕校园WEBGIS的论文下载:http://www.cnblogs.com/Files/Tangf/Campus_WebGIS.rar 由于各种原因,压缩包中已经删除了无关紧要的楼层平面图的DWF部分。同时由于文件大小原因,AutodeskExpressViewe3.1程序也没有提供,请从网上下载。 特别说明:两个程序中已经提供了比较完整的数据和代码,可以复制、修改、传播,传播情保证文件完整性,并且包含Readme文件同时注明出处,但禁止用于商业用途。谢谢。 但愿我的礼物能够给您带来一些帮助。 ==================================================================== 公告:Rover's Official Blog停止更 想了几天,终于决定写这么一个公告了。并不是因为写些东西太累或者太占时间而停止了更,也许就如同前文说是因为今天喝多了酒(呵呵,玩笑),也许如同MSN副标题所言:严重的压力和抑郁,强烈的人格分裂和精神分裂,等待崩溃(呵呵,又一个玩笑)。可能是觉得写的东西没什么水准,并且也不能时常的更,加上个人感觉自己技术的下降(呵呵,也许本来就没有什么技术),考虑甚多,终于作了这么个决定:Rover's Official Blog停止更 同时停止更的是Rover's GIS Blog,是3snews上面的Blog,不过上面的基本上也都是本站的复制。生活类Blog会不定时更,停靠在了Space和浪,由于关系自己暴露隐私等问题,所以本文不详细提供连接地址。从元旦开博到现在也已经八个月的时间了,发了40多篇的随笔和0篇的文章,非常开心能够在博客园作为我的主blog的停靠站,能够让我在这里结识这么多的朋友,并同他们交流,让我学到甚多、收益菲浅,非常的感谢博客园感谢大家。 也许我还会回来,说不定有一天我会发公告说本Blog重开始更,很有可能的事情。希望这段日子能够安静些,能够思考更多些,能够明确些方向,能够做出些实质性的东西,能够提高些自身的技术能力。非常的希望,不知道能否实现。 也许我也会偶然的更一下本日志,大概是在有东西发布或者有好东西同大家分享的情况下吧。不过这篇日志就置顶了吧。 正准备经营的东西,希望能够得到大家的帮助,非常的感谢: www.gpsplayer.cn:GPS玩家。GPS资讯类网站。类似一个简单的闻系统,加上一些简单的留言板等等功能,可能会添加一些Gmap API开发类的内容。 www.wikish.cn:维基上海。有了点想法和思路,但暂时由于技术能力等原因无法实现。 其他:还有两个玉米没有想好(呵呵)。 由于个人比较自私,所以想法上即使有所创意也不大会和大家分享(请见谅),加上自身没有技术,所以个人基本上是宁烂也不实现或者让别人实现(是有点自私了)。请原谅我的自私,Google是有创意的,但他的技术壁垒是他人所无法逾越的,而我即使有创意也没有任何技术壁垒,所以不讲了。加上大陆地区太多的炮制太另人失望了(去年非常红火的百万首页,在大陆地区做的烂的一塌,只会炮制没有几个是有创意或者在人家创意的基础上增加自己创意的,唉)。 非常的希望大家能够给我意见或者建议,对大家提供的帮助非常的感谢。 如果您对这一段有想法或者其他愿意和我交流,那么请给我mail。谢谢。 我的联系方式和需要注意的地方: E-mail:tfljh@163.com(基本上是每天晚上登陆一次) MSN:tfljh@msn.com(基本上是开机登陆,不过状态一般为忙碌,Mail会不定时登陆) Gmail:tangf2004@gmail.com(基本上是两三天登陆一次,Gtalk则不定时登陆了) QQ:65985498(基本上是每天晚上隐身登陆一次,并且一般在十分钟内关闭) 以后的联系通过E-Mail联系,谢绝一切的及时通讯工具,请尽量不要添加我为好友,包括QQ/MSN/Gtalk,如果您发的Mail足够的诚恳并且也足够的值得聊天的理由,那么我会添加你的。不希望通过聊天的方式来解决问题,聊了半天的问题最后做公安局调查户口的事情了(呵呵,说的严重了),或者说是聊了半天后就无聊了然后再也不聊了,多么的没有意思。我倒还是很愿意花上十分钟的时间来阅读您的Mail并将我知道的所答复给您。当然如果有邮件不回复,那么基本上我是不懂而无法回答或者觉得没有任何答复的价值,请多多的包涵。 以前写的部分日志以及提供的下载文件整理: 最后的礼物:校园多媒体系统和校园WEBGIS系统 http://www.cnblogs.com/Tangf/archive/2006/08/05/468257.html ┕校园多媒体系统源代码下载:http://www.cnblogs.com/Files/Tangf/Campus_Multimedia_Infomation_System_Source.rar ┕校园WEBGIS系统源代码下载:http://www.cnblogs.com/Files/Tangf/Campus_WebGIS_Source.rar Google卫星地图的URL计算 http://www.cnblogs.com/Tangf/archive/2006/07/23/457902.html 两点坐标间距离的算法以及验证 http://www.cnblogs.com/Tangf/archive/2006/07/23/457884.html 极索(Gsuo)推出版地图采用Gmap设计思路 http://www.cnblogs.com/Tangf/archive/2006/07/23/457521.html 浅谈LBS(基于位置的服务) http://www.cnblogs.com/Tangf/archive/2006/07/17/452498.html MapBar地图更啦 http://www.cnblogs.com/Tangf/archive/2006/07/13/450215.html 推荐一款软件:Global Mapper http://www.cnblogs.com/Tangf/archive/2006/07/11/448411.html 51ditu、清华地图以及Google地图 http://www.cnblogs.com/Tangf/archive/2006/07/02/440953.html 计算最近点和最近线段 http://www.cnblogs.com/Tangf/archive/2006/07/01/440311.html ┕最近点和最近线段算法示例代码(脱离MAPX5,VB6实现):http://www.cnblogs.com/Files/Tangf/neardis_new.rar Garmin Nuvi 350试用手记 http://www.cnblogs.com/Tangf/archive/2006/06/17/428045.html ┕全文下载(供载专用):http://www.cnblogs.com/Files/Tangf/Nuvi350.rar MapBar中坐标的加密和解密(JS实现) http://www.cnblogs.com/Tangf/archive/2006/06/06/419124.html 发现一个SVG做的地图网站:ChinaQuest http://www.cnblogs.com/Tangf/archive/2006/06/04/417110.html boot.ini文件的修复 http://www.cnblogs.com/Tangf/archive/2006/06/04/416915.html 再谈MAPX打包以及MAPX的安装 http://www.cnblogs.com/Tangf/archive/2006/05/31/414361.html 寻找MapBar的地图切割方法 http://www.cnblogs.com/Tangf/archive/2006/05/28/411397.html ┕我自己切割的Mapbar地图,并且可以在本地运行:http://www.cnblogs.com/Files/Tangf/MapBar_My.rar 已知一点求最近点(问题请教) http://www.cnblogs.com/Tangf/archive/2006/05/28/411182.html ┕求最近点示例代码(基于MAPX5,VB6实现):http://www.cnblogs.com/Files/Tangf/neardis.rar 基于数据库的公交换乘算法(一点思路一点问题) http://www.cnblogs.com/Tangf/archive/2006/05/28/411065.html MapInfo/ArcInfo交流(提问解答,不定时更) http://www.cnblogs.com/Tangf/archive/2006/05/09/395489.html (收集)ShapeKML工具(更:Google正式收购SketchUp) http://www.cnblogs.com/Tangf/archive/2006/04/26/386092.html ┕两个SHapeKML工具:http://www.cnblogs.com/Files/Tangf/shape2kml.rar 地图投影 http://www.cnblogs.com/Tangf/archive/2006/04/17/377638.html 容器透明(如PictureBox) http://www.cnblogs.com/Tangf/archive/2006/04/05/367885.html Google地图切割以及类似Google的开源API http://www.cnblogs.com/Tangf/archive/2006/03/29/362110.html 获取字符串中的指定位置的子字符串 http://www.cnblogs.com/Tangf/archive/2006/03/25/358311.html 做了个界面,请大家PP http://www.cnblogs.com/Tangf/archive/2006/03/16/351640.html [存点资料]车载导航电子地图走向标准化 http://www.cnblogs.com/Tangf/archive/2006/03/04/342733.html [ZT]谈谈 wiki 的缺点 http://www.cnblogs.com/Tangf/archive/2006/03/01/340725.html [贴]Web地图服务:GIS走近你我 http://www.cnblogs.com/Tangf/archive/2006/02/23/336493.html 算我给Google本地和E都市做个广告吧 http://www.cnblogs.com/Tangf/archive/2006/02/18/333076.html 电子地图查询系统_v1.0_源代码(VB6+MAPX5) http://www.cnblogs.com/Tangf/archive/2006/02/15/331375.htmlGoogle ┕电子地图查询系统源代码:http://www.cnblogs.com/Files/Tangf/MapSearch_Source.rar 地图的配色问题(以及MapBar和51ditu) http://www.cnblogs.com/Tangf/archive/2006/02/12/329162.html [分享]上海市样图 http://www.cnblogs.com/Tangf/archive/2006/02/08/327310.html ┕上海市样图:http://www.cnblogs.com/Files/Tangf/Map_SH.rar 用SetupFactory打包MapX(带打好的包和打包文档以及录像) http://www.cnblogs.com/Tangf/archive/2006/02/05/325842.html ┕打包以及文档和录像:http://www.cnblogs.com/Files/Tangf/Mapx_Pack.rar ArcGIS9、MapObject2.2和ArcExplorer2.0连接ArcSDE9.0问题 http://www.cnblogs.com/Tangf/archive/2006/01/26/323698.html MapBar和MapInfo中的比例尺[更:MapBar比例尺是正确的] http://www.cnblogs.com/Tangf/archive/2006/01/24/322854.html MapBar研究(百度地图中的JS部分) http://www.cnblogs.com/Tangf/archive/2006/01/22/321756.html ┕本地浏览,调用远程图片:http://www.cnblogs.com/Files/Tangf/MapBar_baidu.rar 浅谈WEBGIS运用栅格地图实现原理[更:Google Maps带来的型WebGIS设计模式] http://www.cnblogs.com/Tangf/archive/2006/01/14/317327.html 校园WebGIS开发与实践(论文部分) http://www.cnblogs.com/Tangf/archive/2006/01/13/316918.html ┕校园WEBGIS的论文下载:http://www.cnblogs.com/Files/Tangf/Campus_WebGIS.rar MapInfo中按区域分割地图的方法(带MapBasic方法) http://www.cnblogs.com/Tangf/archive/2006/01/13/316363.html MIFtoSHP通用换工具 http://www.cnblogs.com/Tangf/archive/2006/01/06/312654.html ┕MIFtoSHP通用换工具:http://www.cnblogs.com/Files/Tangf/MIFtoSHP.rar MIFtoTAB and TABtoMIF(MIF和TAB互小工具) http://www.cnblogs.com/Tangf/archive/2006/01/01/309375.html ┕MIFandTAB互工具:http://www.cnblogs.com/Files/Tangf/MIFandTAB.rar 『浪人|努力』唐丰,Rover.Tang 2006.08.05

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值