You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Delphi 10.4.2的MapView组件Marker标记上添加显示文本?

Delphi 10.4.2 MapView标记添加文本解决方案

问题原因说明

TMapMarker的Snippet属性默认不会直接显示在标记表面,它是点击标记后弹出的信息窗口(InfoWindow)的副标题内容。你的代码首先存在构造函数语法错误,也没有触发信息窗口显示,所以看不到设置的内容。

场景1:需要文本显示在点击标记弹出的信息窗口中

先修正代码语法,添加标记后可主动调用ShowInfoWindow方法直接弹出信息窗口,无需用户点击:

var
  MapCenter: TMapCoordinate;
  desqr: TMapMarkerDescriptor;
  LMarker: TMapMarker; 
begin
  MapCenter := TMapCoordinate.Create(latitude, longitude);
  // 修正构造函数多余逗号的语法错误,第二个参数为信息窗口的标题
  desqr := TMapMarkerDescriptor.Create(MapCenter, '标记标题');
  desqr.Snippet := myVariable; 
  desqr.Draggable := True;

  // 接收AddMarker返回的标记实例
  LMarker := MapView1.AddMarker(desqr);
  // 主动弹出信息窗口,直接显示标题和Snippet内容
  LMarker.ShowInfoWindow;

  MapView1.Location := MapCenter;
  MapView1.Zoom := 10;
end;

安卓端兼容提示

10.4.2版本MapView在安卓平台存在信息窗口不刷新的已知bug,如果赋值后点击仍不显示Snippet,可在赋值Snippet后追加如下代码触发刷新:

var tmpTitle := desqr.Title;
desqr.Title := '';
desqr.Title := tmpTitle;

场景2:需要文本直接固定显示在标记上,无需点击

原生MapView没有提供直接设置标记旁文本的属性,需要自定义绘制带文本的标记图标,再赋值给标记的Icon属性:

// 生成带文本的自定义标记图标
procedure TForm1.CreateMarkerIconWithText(const AText: string; out AIcon: TBitmap);
begin
  AIcon := TBitmap.Create;
  try
    // 可替换为自己的标记图标资源
    AIcon.LoadFromResourceName(HInstance, 'DEFAULT_MARKER');
    AIcon.Canvas.Font.Size := 12;
    AIcon.Canvas.Font.Color := TAlphaColors.Black;
    // 文本居中绘制在标记下方
    var LTextWidth := AIcon.Canvas.TextWidth(AText);
    AIcon.Canvas.TextOut((AIcon.Width - LTextWidth) div 2, AIcon.Height + 3, AText);
  except
    AIcon.Free;
    raise;
  end;
end;

// 调用示例
var
  LCustomIcon: TBitmap;
begin
  MapCenter := TMapCoordinate.Create(latitude, longitude);
  CreateMarkerIconWithText(myVariable, LCustomIcon);
  try
    desqr := TMapMarkerDescriptor.Create(MapCenter, '标记标题');
    desqr.Icon := LCustomIcon;
    desqr.Draggable := True;
    MapView1.AddMarker(desqr);
  finally
    LCustomIcon.Free;
  end;
end;

内容的提问来源于stack exchange,提问作者Kellouche AbdelHakim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 06:39:02