Delphi GMLib组件的Google Maps Api密钥的动态设置
在过去,这是一个关于为gmlib组件设置googlemapsapi键的问题。提供的解决方案是更改“map.html”头元素,然后重新编译资源(rc.cmd)和组件。这是一个非常静态的解决方案,有时在运行时动态设置api键会更方便,例如,当有人想要为不同的项目使用不同的键时(api键可以存储在项目的某些ini/属性文件中)。我认为最好的方法是为GMMap组件创建一个属性,为构造函数创建一个新参数。 我在GoogleMapsJavaScriptAPI中搜索了一些功能,比如更改/设置api键,但没有找到任何功能。似乎api密钥必须“硬编码”到html文件的head标记中,并且没有javascript函数来更改它。(如果存在某个javascript函数,则ExecuteScript将调用它。) 知道如何在运行时设置api密钥吗 例如,我发现这个链接改变了文档本身: 如何在gmlib中使用它Delphi GMLib组件的Google Maps Api密钥的动态设置,delphi,google-maps-api-3,gmlib,Delphi,Google Maps Api 3,Gmlib,在过去,这是一个关于为gmlib组件设置googlemapsapi键的问题。提供的解决方案是更改“map.html”头元素,然后重新编译资源(rc.cmd)和组件。这是一个非常静态的解决方案,有时在运行时动态设置api键会更方便,例如,当有人想要为不同的项目使用不同的键时(api键可以存储在项目的某些ini/属性文件中)。我认为最好的方法是为GMMap组件创建一个属性,为构造函数创建一个新参数。 我在GoogleMapsJavaScriptAPI中搜索了一些功能,比如更改/设置api键,但没有找
提前感谢。实际上,GMLib中不需要此解决方案,因为当您(他)从资源文件加载HTML映射时,您可以在将其加载到TWebBrowser之前通过代码更改此行(您可以添加密钥) 您需要在TGMMap中添加一个key属性,并在GetBaseHTMLCode方法中考虑该属性 要轻松更改此键,可以从HTML代码中更改此行
<script type="text/javascript" src="https://maps.google.com/maps/api/js?sensor=false&libraries=weather,panoramio,geometry,drawing"></script>
由另一个
<script type="text/javascript" src="https://maps.google.com/maps/api/js?%ssensor=false&libraries=weather,panoramio,geometry,drawing"></script>
并为此更改GetBaseHTMLCode方法
function TCustomGMMap.GetBaseHTMLCode: string;
var
List: TStringList;
Stream: TResourceStream;
begin
Result := '';
List := TStringList.Create;
try
try
Stream := TResourceStream.Create(HInstance, RES_MAPA_CODE, RT_RCDATA);
List.LoadFromStream(Stream);
Result := List.Text;
Result := Format(Result, [KeyProerty]); // <== add this line
finally
if Assigned(Stream) then FreeAndNil(Stream);
if Assigned(List) then FreeAndNil(List);
end;
except
raise Exception.Create(GetTranslateText('No se ha podido cargar el recurso', Language));
end;
end;
函数TCustomGMMap.GetBaseHTMLCode:string;
变量
列表:TStringList;
Stream:TResourceStream;
开始
结果:='';
列表:=TStringList.Create;
尝试
尝试
Stream:=TResourceStream.Create(HInstance、RES\u MAPA\u CODE、RT\u RCDATA);
List.LoadFromStream(Stream);
结果:=List.Text;
结果:=格式(结果,[KeyProerty]);//谢谢你的回复。我按照您的建议实现了Api密钥设置。我已将修补程序文件发送到您的电子邮件中,希望对您的工作有所帮助。新版本已上载到存储库