首页 / 浏览问题 / 组件GIS / 问题详情
mapLayoutControl如何更新网格线
8EXP 2018年11月14日

使用版本为.net 7c, 操作系统:win10 X64。

这设计我完全搞不懂,GeoMap可以作为MapLayout.Elements的一个元素,作为一个主要元素,初始化的时候已经加载到MapLayout上去了。 GeoMap有一个GeoMapGrid属性,设置GeoMap的网格属性为geoMapGrid,显示属性为IsGridVisible= true,按道理来说,重绘一下就可以了。为什么还要重新再加一遍GeoMap到MapLayout.Elements中去,这是什么逻辑呢?然后就会用到下面这种反人类,反面向对象的神逻辑代码,如下:

            geoMap.IsGridVisible = true;
            geoMap.MapGrid = geoMapGrid;

            // 将添加经纬网的地图对象添加到布局中。
            m_mapLayoutControl.MapLayout.Elements.AddNew(geoMap);

为了提高绘制效率,应该只画了地图范围内的网格线,这没的说。但是问题也来了,我要调整一下制图范围,并且调整有点大,我应该怎么做呢?我原图是

我调整好地图范围是这样的:

我满心欢喜地想解锁地图,加上网格线要出图的时候,它就给我重重一击,变成了下面这样!

很希望我上面的分析是错的,这样就可以好好地用它开发完我的产品。但现在我该怎么解决这个该死的问题,求大神cryingcryingcryingcrying

1个回答

您好!您可先创建一个布局对象,并且关联到已经打开的工作空间后设置布局中所显示的地图对象的范围,然后新建一个GeoMapGrid对象,设置经纬网。然后将经纬网添加到地图对象里,再讲该地图对象添加到布局中。添加完之后可以锁定地图控制出图范围。具体范例请搜索iObjects.Net帮助文档的GeoMapGrid 类和iObjects.Net的安装目录\SampleCode\Layout\LayoutDisplay\LayoutDisplay.csproj。
3,362EXP 2018年11月14日

谢谢您的解答,明白您的意思。您的意思是 为地图全图先创建一个写死的GeoMapGrid对象,这样全图都有网格线了。相当于地图对象的网格线间隔动不了。就拿国家标准的分幅线来说,在不同比例尺下,分幅线间隔都是不同的。如果这样的话,要对同一幅地图出不同比例尺的图,只能重新创建一个布局对象,重新加载地图,重新绘制网格……这设计有问题吧,这操作后,地图一通闪烁,等待用户得骂死我呀crying。GeoMapGrid既然是地图的一个属性,而网格线间隔是GeoMapGrid的属性,我应该只是重新设置一下间隔,最多再刷新一下地图对象,就能解决了的。可能在更新间隔后的第一次绘制会了慢一点而以。

...