FGX.Map.TfgCustomMap: различия между версиями

Материал из FGX Native Докуметации
Перейти к навигации Перейти к поиску
(summary)
(summary)
 
(не показаны 3 промежуточные версии этого же участника)
Строка 4: Строка 4:
 
Delphi
 
Delphi
  
<syntaxhighlight lang="Delphi">TfgCustomMap = class (TfgControl)</syntaxhighlight>
+
<syntaxhighlight lang="Delphi">TfgCustomMap = class (TfgControl, IFGXMapObjectFactory)</syntaxhighlight>
  
 
<p class="class-inheritance"><span class="type-border">[[System.Classes.TComponent|TComponent]]</span> -> <span class="type-border">[[FGX.Controls.TfgControl|TfgControl]]</span> -> <span class="type-border">[[FGX.Map.TfgCustomMap|TfgCustomMap]]</span></p>
 
<p class="class-inheritance"><span class="type-border">[[System.Classes.TComponent|TComponent]]</span> -> <span class="type-border">[[FGX.Controls.TfgControl|TfgControl]]</span> -> <span class="type-border">[[FGX.Map.TfgCustomMap|TfgCustomMap]]</span></p>
Строка 30: Строка 30:
 
<p>Готова ли карта к работе. Карта инициализируется асинхронно, поэтому работа с картой доступна только после полной инициализации. Проверить готовность карты к работе можно через этот метод или в событии <i>OnMapReady</i> .</p>
 
<p>Готова ли карта к работе. Карта инициализируется асинхронно, поэтому работа с картой доступна только после полной инициализации. Проверить готовность карты к работе можно через этот метод или в событии <i>OnMapReady</i> .</p>
 
|-
 
|-
| <syntaxhighlight lang="Delphi">function</syntaxhighlight> || <code lang="Delphi">AddMarker(const APosition: [[TfgMapCoordinate|TfgMapCoordinate]]; const ATitle: [[string]]): [[FGX.Map.Types.TfgMapMarker|TfgMapMarker]]</code>
+
| <syntaxhighlight lang="Delphi">procedure</syntaxhighlight> || <code lang="Delphi">ClearObjects()</code>
 +
<p>Очистка всех объектов карты (маркеры, кривые, полигоны).</p>
 +
|-
 +
| <syntaxhighlight lang="Delphi">function</syntaxhighlight> || <code lang="Delphi">CoordinateToPosition(const ACoordinate: [[TfgMapCoordinate|TfgMapCoordinate]]): [[TPointF]]</code>
  
<p>Добавляет на карту маркер с заголовком <i>ATitle</i> . Уникальный идентификатор маркера генерируется автоматически.</p><div class="info">Метод должен вызывать только, когда карта пронициализирована и готова к использованию <i>OnMapReady</i> , <i>IsMapReadyToUse</i> .</div>
+
<p>Выполняет конвертацию указанных географических координат <i>ACoodrinate</i> в локальные координаты компонента.</p><div class="info">Метод должен вызывать только, когда карта проинициализирована и готова к использованию <i>OnMapReady</i> , <i>IsMapReadyToUse</i> .</div>
 
|-
 
|-
| <syntaxhighlight lang="Delphi">function</syntaxhighlight> || <code lang="Delphi">AddMarker(const AId: [[string]]; const APosition: [[TfgMapCoordinate|TfgMapCoordinate]]; const ATitle: [[string]]): [[FGX.Map.Types.TfgMapMarker|TfgMapMarker]]</code>
+
| <syntaxhighlight lang="Delphi">function</syntaxhighlight> || <code lang="Delphi">PositionToCoordinate(const APosition: [[TPointF]]): [[TfgMapCoordinate|TfgMapCoordinate]]</code>
  
<p>Добавляет на карту маркер с заголовком <i>ATitle</i> и уникальным идентификатором <i>AId</i> . Если на карте уже есть маркер с таким же идентификатором, то бросит исключение <i>EfgMapError</i> .</p><div class="info"><p>Метод должен вызывать только, когда карта пронициализирована и готова к использованию <i>OnMapReady</i> , <i>IsMapReadyToUse</i></p><p><i>AId</i> может использоваться для дальнейшего удаления маркера про уникальному идентификатору.</p><p>Карта является владельцем всех экземпляров маркеров. Поэтому маркеры удаляются автоматически картой.</p></div>
+
<p>Выполняет конвертацию точки <i>APosition</i> в локальной системе координаты компонента в географических координаты.</p><div class="info">Метод должен вызывать только, когда карта проинициализирована и готова к использованию <i>OnMapReady</i> , <i>IsMapReadyToUse</i> .</div>
|-
 
| <syntaxhighlight lang="Delphi">function</syntaxhighlight> || <code lang="Delphi">FindMarkerById(const AId: [[string]]; var AMarker: [[FGX.Map.Types.TfgMapMarker|TfgMapMarker]]): [[Boolean]]</code>
 
<p>Ищет маркер на карте по указанному идентификатору <i>AId</i> и если он найден, то возвращает его в <i>AMarker</i> .</p>
 
|-
 
| <syntaxhighlight lang="Delphi">procedure</syntaxhighlight> || <code lang="Delphi">RemoveMarker(const AMarker: [[FGX.Map.Types.TfgMapMarker|TfgMapMarker]])</code>
 
<p>Удаляет маркер с карты.</p>
 
 
|-
 
|-
| <syntaxhighlight lang="Delphi">procedure</syntaxhighlight> || <code lang="Delphi">RemoveMarker(const AId: [[string]])</code>
+
| <syntaxhighlight lang="Delphi">procedure</syntaxhighlight> || <code lang="Delphi">MoveCameraToVisibleRegion(const ARegion: [[TfgMapRect|TfgMapRect]]; const APadding: [[Single]])</code>
<p>Удаляет маркер с карты по его идентификатору <i>TfgMapMarker.Id</i> .</p>
 
|-
 
| <syntaxhighlight lang="Delphi">procedure</syntaxhighlight> || <code lang="Delphi">ClearMarkersInCategory(const ACategory: [[string]])</code>
 
  
<p>Удаляет все маркеры в указанной категории <i>ACategory</i> .</p><div class="info">Название категории регистрозависимое.</div>
+
<p>Задает область видимого на карте региона указанного в географических координатах с указанными отступами в dp.</p><div class="info">Метод должен вызывать только, когда карта проинициализирована и готова к использованию <i>OnMapReady</i> , <i>IsMapReadyToUse</i> .</div>
|-
 
| <syntaxhighlight lang="Delphi">procedure</syntaxhighlight> || <code lang="Delphi">ClearMarkers()</code>
 
<p>Удаляет все маркеры с карты и уничтожает все экземпляры маркеров.</p>
 
 
|}
 
|}
  
Строка 58: Строка 49:
  
 
{| class="wikitable sortable"
 
{| class="wikitable sortable"
 +
|-
 +
| <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>Markers: [[FGX.Map.TfgMapMarkerList|TfgMapMarkerList]]</code>
 +
<span style="color:gray">Описание отсутствует.</span>
 +
|-
 +
| <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>Polylines: [[FGX.Map.TfgMapPolylineList|TfgMapPolylineList]]</code>
 +
<span style="color:gray">Описание отсутствует.</span>
 +
|-
 +
| <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>Polygons: [[FGX.Map.TfgMapPolygonList|TfgMapPolygonList]]</code>
 +
<span style="color:gray">Описание отсутствует.</span>
 +
|-
 +
| <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>Circles: [[FGX.Map.TfgMapCircleList|TfgMapCircleList]]</code>
 +
<span style="color:gray">Описание отсутствует.</span>
 +
|-
 +
| <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>VisibleRegion: [[TfgMapRect|TfgMapRect]]</code>
 +
 +
<p>Координаты видимого на карте региона указанного в географических координатах.</p><div class="info">Метод должен вызывать только, когда карта проинициализирована и готова к использованию <i>OnMapReady</i> , <i>IsMapReadyToUse</i> .</div>
 
|-
 
|-
 
| <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>CameraTarget: [[TfgMapCoordinate|TfgMapCoordinate]]</code>
 
| <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>CameraTarget: [[TfgMapCoordinate|TfgMapCoordinate]]</code>
Строка 70: Строка 77:
 
| <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>CameraBearing: [[Single]]</code>
 
| <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>CameraBearing: [[Single]]</code>
 
<p>Пеленг камеры в градусах по часовой стрелке относительно Севера.</p>
 
<p>Пеленг камеры в градусах по часовой стрелке относительно Севера.</p>
 +
|-
 +
| <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>ControlsSettings: [[FGX.Map.Types.TfgMapControlSettings|TfgMapControlSettings]]</code>
 +
<p>Настройки отображения элементов управления картой.</p>
 
|-
 
|-
 
| <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>MapType: [[FGX.Map.TfgMapType|TfgMapType]]</code>
 
| <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>MapType: [[FGX.Map.TfgMapType|TfgMapType]]</code>
Строка 77: Строка 87:
  
 
<p>Настройки стиля Google карты.</p><div class="info">Актуально только для Андроид платформы.</div>
 
<p>Настройки стиля Google карты.</p><div class="info">Актуально только для Андроид платформы.</div>
 +
|-
 +
| <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>StandardLayerKinds: [[FGX.Map.Types.TfgMapStandardLayerKinds|TfgMapStandardLayerKinds]]</code>
 +
<p>Настройки отображения стандартных слоев.</p>
 +
|-
 +
| <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>UserGestureKinds: [[FGX.Map.Types.TfgMapUserGestureKinds|TfgMapUserGestureKinds]]</code>
 +
<p>Какие жесты разрешается совершать пользователю с картой.</p>
 
|}
 
|}
  
Строка 85: Строка 101:
 
| <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnCameraChanging: [[TNotifyEvent]]</code>
 
| <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnCameraChanging: [[TNotifyEvent]]</code>
 
<p>Срабатывает в процессе изменения параметров камеры.</p>
 
<p>Срабатывает в процессе изменения параметров камеры.</p>
 +
|-
 +
| <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnCameraChanged: [[TNotifyEvent]]</code>
 +
<p>Срабатывает в конце процесса изменения параметров камеры.</p>
 
|-
 
|-
 
| <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnMapReady: [[TNotifyEvent]]</code>
 
| <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnMapReady: [[TNotifyEvent]]</code>
 
<p>Вызывается, когда карта проинициализирована и готова к использованию. Именно в этот момент можно работать с объектами на карте.</p>
 
<p>Вызывается, когда карта проинициализирована и готова к использованию. Именно в этот момент можно работать с объектами на карте.</p>
 
|-
 
|-
| <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnTapMarker: [[TfgOnMapMarkerTap]]</code>
+
| <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnMarkerTap: [[TfgMapMarkerEvent|TfgMapMarkerEvent]]</code>
 
<p>Вызывается, когда пользователь нажимает на маркер.</p>
 
<p>Вызывается, когда пользователь нажимает на маркер.</p>
 +
|-
 +
| <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnMarkerDragStart: [[TfgMapMarkerEvent|TfgMapMarkerEvent]]</code>
 +
<p>Вызывается, когда маркер начинает перетаскиваться.</p>
 +
|-
 +
| <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnMarkerDrag: [[TfgMapMarkerEvent|TfgMapMarkerEvent]]</code>
 +
<p>Вызывается повторно во время перетаскивания маркера.</p>
 +
|-
 +
| <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnMarkerDragEnd: [[TfgMapMarkerEvent|TfgMapMarkerEvent]]</code>
 +
<p>Вызывается после перетаскивания маркера.</p>
 +
|-
 +
| <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnPolygonTap: [[TfgMapPolygonEvent|TfgMapPolygonEvent]]</code>
 +
<p>Вызывается, когда пользователь нажимает на полигон.</p>
 +
|-
 +
| <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnPolylineTap: [[TfgMapPolylineEvent|TfgMapPolylineEvent]]</code>
 +
<p>Вызывается, когда пользователь нажимает на кривую.</p>
 +
|-
 +
| <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnCircleTap: [[TfgMapCircleEvent|TfgMapCircleEvent]]</code>
 +
<p>Вызывается, когда пользователь нажимает на круг.</p>
 +
|-
 +
| <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnInfoWindowTap: [[TfgMapMarkerEvent|TfgMapMarkerEvent]]</code>
 +
<p>Вызывается, когда пользователь нажимает на информационное окно, появляющееся рядом с маркером.</p>
 
|}
 
|}
  

Текущая версия на 17:21, 23 декабря 2022

Delphi

TfgCustomMap = class (TfgControl, IFGXMapObjectFactory)

TComponent -> TfgControl -> TfgCustomMap

Прямые наследники: TfgMap

Описание

Контрол отображения нативной карты. Карта позволяет работать с графическими объектами на карте, маркерами, а так же обеспечивает базовые настройки работы с камерой и способов отображения карты.

Для того, чтобы начать использовать камеру на Android, необходимо получить API ключ от Google Maps. Это делается таким же способом, как и для FMX. Инструкция доступна здесь: http://docwiki.embarcadero.com/RADStudio/Rio/en/Configuring_Android_Applications_to_Use_Google_Maps

Google карта требует наличие следующих разрешений, которые нужно запросить при помощи сервиса TfgPermissionService в рантайме:

  • android.permission.ACCESS_COARSE_LOCATION
  • android.permission.ACCESS_FINE_LOCATION

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

На каждой платформе используется свой провайдер карты. На Андроиде - Google Map.

Конструкторы

constructor
Create(AOwner: TComponent)

Описание отсутствует.

Методы

function
IsMapReadyToUse(): Boolean

Готова ли карта к работе. Карта инициализируется асинхронно, поэтому работа с картой доступна только после полной инициализации. Проверить готовность карты к работе можно через этот метод или в событии OnMapReady .

procedure
ClearObjects()

Очистка всех объектов карты (маркеры, кривые, полигоны).

function
CoordinateToPosition(const ACoordinate: TfgMapCoordinate): TPointF

Выполняет конвертацию указанных географических координат ACoodrinate в локальные координаты компонента.

Метод должен вызывать только, когда карта проинициализирована и готова к использованию OnMapReady , IsMapReadyToUse .
function
PositionToCoordinate(const APosition: TPointF): TfgMapCoordinate

Выполняет конвертацию точки APosition в локальной системе координаты компонента в географических координаты.

Метод должен вызывать только, когда карта проинициализирована и готова к использованию OnMapReady , IsMapReadyToUse .
procedure
MoveCameraToVisibleRegion(const ARegion: TfgMapRect; const APadding: Single)

Задает область видимого на карте региона указанного в географических координатах с указанными отступами в dp.

Метод должен вызывать только, когда карта проинициализирована и готова к использованию OnMapReady , IsMapReadyToUse .

Свойства

property
Markers: TfgMapMarkerList

Описание отсутствует.

property
Polylines: TfgMapPolylineList

Описание отсутствует.

property
Polygons: TfgMapPolygonList

Описание отсутствует.

property
Circles: TfgMapCircleList

Описание отсутствует.

property
VisibleRegion: TfgMapRect

Координаты видимого на карте региона указанного в географических координатах.

Метод должен вызывать только, когда карта проинициализирована и готова к использованию OnMapReady , IsMapReadyToUse .
property
CameraTarget: TfgMapCoordinate

Географические координаты относительно которой размещается камера.

property
CameraZoom: Single

Зум камеры [1..20]:

  • 1 - Весь мир. Самый мелкий масштаб.
  • 5 - Континенты.
  • 10 - Города.
  • 15 - Улицы.
  • 20 - Здания.
property
CameraTilt: Single

Наклон камеры относительно перпендикуляра опущеного на землю и направления обзора с камеры в точку CameraTarget .

property
CameraBearing: Single

Пеленг камеры в градусах по часовой стрелке относительно Севера.

property
ControlsSettings: TfgMapControlSettings

Настройки отображения элементов управления картой.

property
MapType: TfgMapType

Тип карты.

property
GoogleMapStyle: TfgGoogleMapStyleOptions

Настройки стиля Google карты.

Актуально только для Андроид платформы.
property
StandardLayerKinds: TfgMapStandardLayerKinds

Настройки отображения стандартных слоев.

property
UserGestureKinds: TfgMapUserGestureKinds

Какие жесты разрешается совершать пользователю с картой.

События

event
OnCameraChanging: TNotifyEvent

Срабатывает в процессе изменения параметров камеры.

event
OnCameraChanged: TNotifyEvent

Срабатывает в конце процесса изменения параметров камеры.

event
OnMapReady: TNotifyEvent

Вызывается, когда карта проинициализирована и готова к использованию. Именно в этот момент можно работать с объектами на карте.

event
OnMarkerTap: TfgMapMarkerEvent

Вызывается, когда пользователь нажимает на маркер.

event
OnMarkerDragStart: TfgMapMarkerEvent

Вызывается, когда маркер начинает перетаскиваться.

event
OnMarkerDrag: TfgMapMarkerEvent

Вызывается повторно во время перетаскивания маркера.

event
OnMarkerDragEnd: TfgMapMarkerEvent

Вызывается после перетаскивания маркера.

event
OnPolygonTap: TfgMapPolygonEvent

Вызывается, когда пользователь нажимает на полигон.

event
OnPolylineTap: TfgMapPolylineEvent

Вызывается, когда пользователь нажимает на кривую.

event
OnCircleTap: TfgMapCircleEvent

Вызывается, когда пользователь нажимает на круг.

event
OnInfoWindowTap: TfgMapMarkerEvent

Вызывается, когда пользователь нажимает на информационное окно, появляющееся рядом с маркером.

Константы

const
DefaultMapType: TfgMapType

Описание отсутствует.