当我在表单上放置
TWebLeafletMaps
组件时,地图右下角会出现一个小的“传单 | OpenStreetMap 贡献者”归属线,如下所示:
通常在 JavaScript 中,当您初始化传单地图时,您可以设置的选项之一是
attributionControl
属性。您只需将此属性设置为 false
,然后属性就不会像以下 JavaScript 代码中那样显示:
var map = L.map('map', {attributionControl: false}).setView([0, 0]);
但我不能在 Delphi 中执行此操作,因为我不是初始化地图的人。我只需将组件放置到表单上,然后它就会自动创建和设置。我在组件上也没有看到这个的设计时属性。
那么如何禁用或删除
TWebLeafletMaps
组件上的归因线?
我也不希望我网站上的所有传单地图禁用它。所以全局设置或其他东西不是我所需要的。我只需要禁用特定地图的归因线。
我仍然希望有一个隐藏的属性或函数,我可以简单地在
TWebLeafletMaps
组件上调用和使用来禁用归因,但与此同时,我找到了解决方案。
TWebLeafletMaps
组件使用用于归因的 <div>
类呈现 leaflet-control-attribution
。所以我编写了以下Delphi编程程序,可用于启用和禁用归因:
procedure LeafletMapsAttribution(Map: TWebLeafletMaps; Enabled: Boolean);
var
Attribution: TJSHTMLElement;
DisplayStyle: String;
begin
Attribution := TJSHTMLElement(Map.ElementHandle.getElementsByClassName('leaflet-control-attribution')[0]);
if Enabled then DisplayStyle := 'block' else DisplayStyle := 'none';
Attribution.style.setProperty('display', DisplayStyle);
end;
它仍然存在,但至少用户不会看到它。
要使用此函数,您只需将组件作为第一个参数传递,并将
Enabled
状态传递给第二个参数。
因此,要隐藏归因,请执行
LeafletMapsAttribution(Map, False)
并显示归因,请执行 LeafletMapsAttribution(Map, True)
。