Продолжаем разбираться с KML в Delphi. Сегодня будем разбираться с тем как изменить иконку метки. По умолчанию, в качестве иконки для меток используется «канцелярская кнопка» желтого цвета. Пользователь может изменить иконку в соответствующем меню Google Earth, а мы — используя элемент IcoStyle в KML.
Стиль для иконок IconStyle позволяет изменить цвет иконки, смешав его с цветом по умолчанию, масштаб и поворот иконки, а также указать собственное изображение для иконки метки в KML.
IconStyle является наследником абстрактного ColorStyle, с которым мы работали в этой статье:
В модуле 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 могут быть заданы тремя различными способами:
- в виде пикселей («huPixels»)
- в виде части значка («huFraction»)
- в виде смещения пикселей («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:
Предыдущая статья: «KML Reference в Delphi по-русски #5: Изменяем стиль подсказок к меткам»
Следующая статья: «KML Reference в Delphi по-русски #7: Добавляем “интерактивности” на карту»
Книжная полка
Описание Подробно рассматривается библиотека FM, позволяющая создавать полнофункциональное программное обеспечение для операционных систем Windows и OS X, а также для смартфонов и планшетных компьютеров, работающих под управлением Android и iOS
|
||
Описание: Рассмотрены практические вопросы по разработке клиент-серверных приложений в среде Delphi 7 и Delphi 2005 с использованием СУБД MS SQL Server 2000, InterBase и Firebird. Приведена информация о теории построения реляционных баз данных и языке SQL. Освещены вопросы эксплуатации и администрирования СУБД.
|
||
Название: О чем не пишут в книгах по Delphi
Описание: Рассмотрены малоосвещенные вопросы программирования в Delphi. Описаны методы интеграции VCL и API. Показаны внутренние механизмы VCL и приведены примеры вмешательства в эти механизмы. Рассмотрено использование сокетов в Delphi: различные режимы их работы, особенности для протоколов TCP и UDP и др.
|