Перемещение карты во фрейме

0 голосов
спросил 29 Фев, 12 от suhomar (240 баллов) в категории Программные продукты Esri
Уважаемые форумчане, подскажите как переместить карту во фрейме в нужную позицию (не меняя масштаб).  Позиция заданна или центральной точкой или "окном" не важно. Какие методы и каких объектов для этого использовать? Буду благодарен за любую подсказку

3 Ответы

0 голосов
ответил 29 Фев, 12 от TDenis (42,620 баллов)
Класс Map реализует много интерфейсов, в т.ч. IActiveView.
Подвинуть карту можно так:
https://forum.esri-cis.ru/index.php?qa=40195
На этот класс можно выйти, например, через IMxDocument.

Если же есть ссылка на нужный фрейм, то можно воспользоваться свойством IMapFrame.MapBounds.
0 голосов
ответил 01 Март, 12 от suhomar (240 баллов)
0 голосов
ответил 01 Март, 12 от suhomar (240 баллов)
еще раз спасибо, с подсказкой нашел:
Public Sub ZoomInCenter()
  Dim pMxDocument As IMxDocument
  Dim pActiveView As IActiveView
  Dim pDisplayTransform As IDisplayTransformation
  Dim pEnvelope As IEnvelope
  Dim pCenterPoint As IPoint

  Set pMxDocument = Application.Document
  Set pActiveView = pMxDocument.FocusMap
  Set pDisplayTransform = pActiveView.ScreenDisplay.DisplayTransformation
  Set pEnvelope = pDisplayTransform.VisibleBounds
  'In this case, we could have set pEnvelope to IActiveView::Extent
  'Set pEnvelope = pActiveView.Extent
  Set pCenterPoint = New Point
  
  pCenterPoint.x = ((pEnvelope.XMax - pEnvelope.XMin) / 2) + pEnvelope.XMin
  pCenterPoint.y = ((pEnvelope.YMax - pEnvelope.YMin) / 2) + pEnvelope.YMin
  pEnvelope.width = pEnvelope.width / 2
  pEnvelope.height = pEnvelope.height / 2
  pEnvelope.CenterAt pCenterPoint
  pDisplayTransform.VisibleBounds = pEnvelope
  pActiveView.Refresh
End Sub


а можно еще так центрировать:
pActiveView.extent = pActiveView.FullExtent
pActiveView.Refresh
pDisplayTransform.ScaleRatio = <требуемый масштаб>
pActiveView.Refresh

Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...