SuperMap .NET平台二次开发——新手笔记(一)

时间:2024-03-13 15:12:34

一、下载并配置

iObjects 官方下载地址:http://support.supermap.com.cn/product/iObjects.aspx#

iObjects 安装配置指南:http://support.supermap.com.cn/DataWarehouse/WebDocHelp/iObjectsNet/index.html

开发环境要求:

Microsoft Windows 7、 8 、10,Microsoft Windows Server 2008 R2 和Microsoft Windows Server 2012 

Microsoft .NET Framework 4.0 

Microsoft Visual Studio 2010 或 Microsoft Visual Studio 2012 及以上版本

当前开发环境:

Microsoft Windows 10

Microsoft .NET Framework 4.7

Microsoft Visual Studio 2017

一、完全部署,官方推荐

1、下载完整版。4G大小,安排合适的下载时间吧,下载速度不快。

SuperMap .NET平台二次开发——新手笔记(一)

2、安装 Install_x86.bat(32位的版本) 。因为Microsoft Visual Studio 只有 32 位版本,所以注册 Microsoft Visual Studio 工具箱操作只适用于 SuperMap iObjects .NET 32 位版本。

3、在系统环境变量 Path 中添加产品安装包中Bin目录的路径。

4、安装运行环境 Microsoft .NET Framework 4.0。电脑基本都有安装。

5、 安装许可驱动和为期 90 天的试用许可; 试用许可有三种获取方式:

(1)、首次安装许可驱动,可自动获取 90 天的试用许可;

(2)、在官网申请试用许可,试用许可是*.lic9d 格式的文件, 并在本地**即可;

(3)、在 SuperMap Online 中登录帐号之后,绑定手机号,即可获得 90 天的试用云许可。

6、注册 Microsoft Visual Studio 工具箱(左侧菜单栏下的产品入门第二步中),将产品提供的控件添加到工具箱中。理论上安装完成后会自动注册并添加进工具箱,这和SuperMap iObject支持的VS版本有关,若没有自动添加,就选择手动添加好了,下文也有介绍。

二、使用免安装版

1、下载32位Bin包。

SuperMap .NET平台二次开发——新手笔记(一)

2、在系统环境变量Path中添加Bin包位置。

SuperMap .NET平台二次开发——新手笔记(一)

3、VS中新建一个 Windows窗体应用程序,在工具箱中右击,点击添加选项卡,命名后右击,点击选择项,在.NET Framework组件窗口中,点击浏览,选择所有的SuperMap.*.dll添加,没有控件的dll会报错,不必理会,因为没有必要一个个筛选哪些dll有控件,一直点击确定即可。

SuperMap .NET平台二次开发——新手笔记(一)

三、创建第一个SuperMap工程

创建一个新工程官方示例,在左侧菜单栏下的产品入门下。

1、添加Workspace时,报错:创建组件Workspace失败

SuperMap .NET平台二次开发——新手笔记(一)

报错原因:许可没注册或没注册成功。

解决办法:下载supermap-idesktop精简包,精简包是免安装的,点击Tools文件夹下的SuperMap .NET平台二次开发——新手笔记(一)注册许可。

SuperMap .NET平台二次开发——新手笔记(一)

2、启动运行时报错:“System.BadImageFormatException”类型的未经处理的异常在 GettingStarted.exe 中发生 
其他信息: 未能加载文件或程序集“SuperMap.Mapping, Version=7.0.0.0, Culture=neutral, PublicKeyToken=0635c574ea890381”或它的某一个依赖项。试图加载格式不正确的程序。

报错原因:SuperMap.*.dll的编译平台是x86的,在X64和AnyCPU下均运行不成功。

解决办法:将目标平台改成x86。

SuperMap .NET平台二次开发——新手笔记(一)

推荐文章:我也是个傻瓜的《SuperMap入门

3、通过名称打开工作空间中的地图:mapControl1.Map.Open("世界地图_Day");报错:

SuperMap .NET平台二次开发——新手笔记(一)

报错原因:我选择的测试文件中根本没有“世界地图_Day”这个名称的地图。这个错误是由于地图名称错误或者说是工作空间中没有该地图引起的。

解决办法:

workspace1.Maps[0]返回string类型的工作空间中的地图名称,可以通过其获取到正确的地图名称,或者直接通过mapControl1.Map.Open(workspace1.Maps[0]);来进行测试。