уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Продолжаем разбираться с KML в Delphi. Сегодня будем разбираться с тем как изменить иконку метки. По умолчанию, в качестве иконки для меток используется «канцелярская кнопка» желтого цвета. Пользователь может изменить иконку в соответствующем меню Google Earth, а мы — используя элемент IcoStyle в KML.

Стиль для иконок IconStyle позволяет изменить цвет иконки, смешав его с цветом по умолчанию, масштаб и поворот иконки, а также указать собственное изображение для иконки метки в KML.

IconStyle является наследником абстрактного ColorStyle, с которым мы работали в этой статье:

Часть иерархии элементов KML (https://developers.google.com/kml/documentation/kmlreference)

В модуле kml.pas элемент IconStyle определен следующим образом:

THotSpotUnits = (huFraction, huPixels, huInsetPixels);
 
  TKmlIconStyle = class(TKmlColorStyle)
  private type
    TKmlHotSpot = class
    private
      FX: single;
      FY: single;
      FXunits: THotSpotUnits;
      FYunits: THotSpotUnits;
    public
      property X: single read FX write FX;
      property Y: single read FY write FY;
      property Xunits: THotSpotUnits read FXunits write FXunits;
      property Yunits: THotSpotUnits read FYunits write FYunits;
    end;
  private
    FScale: single;
    FHeading: single;
    FHref: string;
    FHotSpot: TKmlHotSpot;
  protected
    function GetName:string;override;
  public
    constructor Create;override;
    destructor Destroy;override;
    function Save(AParentNode: IXMLNode): IXMLNode; override;
    property Scale: single read FScale write FScale;
    property Heading: single read FHeading write FHeading;
    property Href: string read FHref write FHref;
    property HotSpot: TKmlHotSpot read FHotSpot write FHotSpot;
  end;

Свойства TKmlIconStyle следующие:

Свойство Тип Описание
Scale single Коэффициент масштаба метки. Например, значение Scale равное 2 увеличит метку в два раза.
Heading single Направление (Север, Юг, Восток, Запад), в градусах. По умолчанию = 0 (север). Диапазон значений от 0 до 360 градусов.
Href string Ссылка на изображение иконки
HotSpot TKmlHotSpot Указывает позицию в значке, которая «привязана» к точке (Point), указанной в метке. См. подробное описание ниже.

HotSpot. Значения x и y могут быть заданы тремя различными способами:

  1. в виде пикселей («huPixels»)
  2. в виде части значка («huFraction»)
  3. в виде смещения пикселей («insetPixels») — смещение в пикселях относительно верхнего правого угла значка.

Положения x и y могут задаваться различными способами — например, x может быть в пикселях (huPixels), а y может быть задан в виде huFraction. Начало системы координат находится в левом нижнем углу значка.

Работать со стилем иконок ничуть не сложнее, чем с любыми другими стилями. Например, мы можем задать вот такой стиль иконки:
Style.AddStyle(TKmlIconStyle);

TKmlIconStyle(Style.SubStyle.Last).Color:='ff00ff00';
TKmlIconStyle(Style.SubStyle.Last).Scale:=2.5;
TKmlIconStyle(Style.SubStyle.Last).Href:='https://maps.google.com/mapfiles/kml/pal3/icon21.png';
TKmlIconStyle(Style.SubStyle.Last).HotSpot.X:=0.5;
TKmlIconStyle(Style.SubStyle.Last).HotSpot.Y:=0.5;
TKmlIconStyle(Style.SubStyle.Last).HotSpot.Xunits:=huFraction;
TKmlIconStyle(Style.SubStyle.Last).HotSpot.Yunits:=huFraction;

В результате, на карте появится вот такая метка:

А можем убрать из стиля цвет иконки (свойство Color) и получить вот такую метку:
Таким образом, на данный момент мы научились работать со всеми основными стилями элементов в KML: LineStyle, PolyStyle, BalloonStyle, IconStyle и LabelStyle. Пока «за бортом» остался один стиль — ListStyle, но к нему я, может быть вернусь позднее, если он потребуется мне для работы. А пока можно загрузить обновленную версию модуля kml.pas и поразбираться самостоятельно с различными элементами в KML:

Скачать исходник модуля kml.pas:

Исходники — Google API

 

Книжная полка

Описание Подробно рассматривается библиотека FM, позволяющая создавать полнофункциональное программное обеспечение для операционных систем Windows и OS X, а также для смартфонов и планшетных компьютеров, работающих под управлением Android и iOS
купить книгу delphi на ЛитРес
Описание: Рассмотрены практические вопросы по разработке клиент-серверных приложений в среде Delphi 7 и Delphi 2005 с использованием СУБД MS SQL Server 2000, InterBase и Firebird. Приведена информация о теории построения реляционных баз данных и языке SQL. Освещены вопросы эксплуатации и администрирования СУБД.
купить книгу delphi на ЛитРес
Описание: Рассмотрены малоосвещенные вопросы программирования в Delphi. Описаны методы интеграции VCL и API. Показаны внутренние механизмы VCL и приведены примеры вмешательства в эти механизмы. Рассмотрено использование сокетов в Delphi: различные режимы их работы, особенности для протоколов TCP и UDP и др.
купить книгу delphi на ЛитРес
5 1 голос
Рейтинг статьи
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Подписаться
Уведомить о
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии