IFeatureIdentifyObj实现闪烁功能
从GIS浩淼的天空看到的一篇用IFeatureIdentifyObj实现闪烁功能,不过这方法AE不支持。
pEnvs = AxMapControl1.TrackRectangle
Dim pLayer As IFeatureLayer
pLayer = pMainMap.Layer(0)
Dim pIdentify As IIdentify
pIdentify = pLayer
Dim pArr As IArray
pArr = pIdentify.Identify(pEnvs)
Dim pFtIdenObj As IFeatureIdentifyObj
Dim pIdenObj As IIdentifyObj
If Not pArr Is Nothing Then
Dim j As Integer
For j = 0 To pArr.Count - 1
pFtIdenObj = pArr.Element(j)
pIdenObj = pFtIdenObj
pIdenObj.Flash(pMainAV.ScreenDisplay)
pIdenObj = Nothing
pFtIdenObj = Nothing
Next
End If
要在AE实现闪烁功能,一个方法是用IHookActions.DoActions()方法搭上esriHookActionsFlash作为动作。
IHookActions的定义如下
[Visual Basic 6.0]
Sub DoAction(
ByVal pUnknown As Unknown,
ByVal Action As esriHookActions
)
[Visual Basic .NET]
Public Sub DoAction ( _
ByVal pUnknown As Object, _
ByVal Action As esriHookActions _
)
pUnknown必须是实现了IEnvelope, IPoint, IPolygon 或者 IPolyline 的geometry对象,
而且该geometry不应该为空。
Action方面有6个constant,可以根据需要选择.
Constant |
Value |
Description |
esriHookActionsFlash |
0 |
Flash the geometry. |
esriHookActionsPan |
1 |
Pan to the geometry. |
esriHookActionsZoom |
2 |
Zoom to the geometry. |
esriHookActionsGraphic |
3 |
Create a graphic for the geometry. |
esriHookActionsLabel |
4 |
Create a graphic and label for the geometry. |
esriHookActionsCallout |
5 |
Create a callout for the geometry. |
完成闪烁的代码如下:
Dim hookActions as IHookActions
hookActions.DoAction(feature.Shape, esriHookActions.esriHookActionsPan)
Application.DoEvent();
hookActions.DoAction(feature.Shape,esriHookActions.esriHookActionsFlash)
-----------------------------------------------------------
佛对我说:你心里有尘。我用力的拭擦。