我有一个在 TWebBrowser 中加载 Google map 的 Delphi 应用程序:
with WebBrowser1.Document as IHTMLDocument2 do
with parentWindow do
ExecScript('map.setCenter(new GLatLng(51.15917, 4.13889),10)', 'JavaScript');
知道如何在我的应用程序中获取 map 的范围吗?
TIA
史蒂文
编辑
Rob 的回答指向了一个部分解决方案:javascript 知道坐标。我想让它们进入我的 Delphi 应用程序。
专家交流注意事项
(对 davidins 回复的长回答)
当他们开始时我在 Expert's Exchange 上,当时它仍然免费。当他们变得贪婪时,我离开了那里。
如果有人好心帮我解决技术问题,我不介意为此请他喝一杯,但我绝对不想为此付钱给其他人。
他们的 30 天试用期更糟。如果他们不收款,为什么我必须提交我的信用卡号?
“Experts Exchange 是互联网上最值得信赖的 IT 资源,我们相信您会同意”(原文如此)。好吧,我不太确定,EE。我更喜欢 SO,感谢我能得到的任何帮助,并尽可能尝试给出答案(不幸的是,这种情况并不常见)。
最佳答案
我打算建议您使用 javascript 知道坐标的事实,以某种方式通过该调用执行脚本,以便将坐标返回到您的应用程序。但是,在查看此线程后 - expert's exchange ,这似乎是不可能的。但同一个线程说“您可以让您的 JavaScript 函数设置 HTML 隐藏字段元素的值,然后从您的 Delphi 代码中读取该值。”这个例子是向下的。希望这有点帮助。不过绝对不是获取坐标的理想方式。
编辑:抱歉,我没有意识到当你从这里去专家交流时,它会屏蔽内容。如果你从谷歌访问那个页面,它就会出现。只是为了节省您的时间,这里是解决方案的复制和粘贴:
拖放区: 我认为没有办法直接获取 JavaScript 函数的值,因为函数是通过各种神奇的抽象层执行的。但是,您可以让 JavaScript 函数设置 HTML 隐藏字段元素的值,然后从 Delphi 代码中读取该值。
第一部分非常简单:您只需让 JavaScript 函数在隐藏字段上设置值:
<!-- Somewhere in the HTML form -->
<input type="hidden" id="HiddenFieldID" name="HiddenFieldName" value="">
--------------------
// JavaScript function
function MyFunc()
{
// Get the hidden field by its ID.
var elm = document.getElementById('HiddenFieldID');
if (elm) elm.value = '10086';
return 10086;
}
这是关于如何执行最后一部分的示例: http://www.cryer.co.uk/brian/delphi/twebbrowser/read_write_form_elements.htm#GetValueOfField
在您的情况下,您将需要类似附加代码的内容。
-dZ.
function GetFieldValue(fromForm: IHTMLFormElement;
const fieldName: string): string;
var
field: IHTMLElement;
inputField: IHTMLInputElement;
selectField: IHTMLSelectElement;
textField: IHTMLTextAreaElement;
begin
field := fromForm.Item(fieldName,'') as IHTMLElement;
result := '';
if Assigned(field) and (field.tagName = 'INPUT') then
begin
inputField := field as IHTMLInputElement;
if inputField.type_ = 'hidden' then
result := inputField.value;
end
end;
关于javascript - 谷歌地图的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1087912/