vs2008是个很好的工具, 个人认为Arcgis提供的api还是不多的,但是例子相当的全,安装explorer后,在安装目录下DeveloperKit\Samples里有基本所有功能的例子;
二次开发所需要的功能:
1.能用的对象
explorer提供了开发所用的几个对象,ESRI.ArcGISExplorer.Application下有Button(浏览器菜单栏按钮),DockWindow(自带浏览器菜单栏按钮,但点击后会弹出浏览器窗口),Extension(浏览器扩展,可在浏览器启动、关闭时调用),Gallery(浏览器图例显示);
2.加载地图(通过程序)
直接加载地图文件例子中有;
下面加载发布在arcgis server上的地图代码:
MapDisplay mapDisp = ESRI.ArcGISExplorer.Application.Application.ActiveMapDisplay;//现有的地图显示区
string uri="http://ip:port/arcgis/services"; //server发布的路径
string serviceName=“china”;//发布服务名
string layerName=“beijing”;//图层名
try
{
ServiceConnectionProperties connProps =new ServiceConnectionProperties(ServiceType.GlobeServer, new Uri(uri), serviceName, layerName);
ServiceLayer sl = new ServiceLayer(connProps);
if (sl.Connect())
{
mapDisp.Map.ChildItems.Add(sl);
}
else
{
//Investigate connection issue.
ConnectionStatus status = sl.ConnectionStatus;
if (status.HasError)
{
MessageBox.Show(“load map error”);
}
}
//sl.Disconnect();
}
catch
{
}
加载时图层多加上System.Windows.Forms.Application.DoEvents();不至于explorer被锁定。
也可以加上ProgressHelper help = new ProgressHelper(title, "", content);滚动条,客户体验会好一点
help.Show();出现滚动条
help.Close();去掉滚动条
3.加载kml
kml文件可根据规范生成,个人认为加载自定义的图形用kml方便。
KmlLayer kmlLayer = new KmlLayer(“..\..\KmlDoc.kml”);//路径可以是本地的也可以是远程服务器下的
kmlLayer.Name = kmlName if (kmlLayer.Connect())
{
mapDisp.Map.ChildItems.Add(kmlLayer);
//mapDisp.ZoomTo(kmlLayer);//转换到默认视角
}