Javascript 谷歌地图的范围

Javascript 谷歌地图的范围,javascript,delphi,google-maps,Javascript,Delphi,Google Maps,我有一个Delphi应用程序,它在TWebBrowser中加载Google地图: with WebBrowser1.Document as IHTMLDocument2 do with parentWindow do ExecScript('map.setCenter(new GLatLng(51.15917, 4.13889),10)', 'JavaScript'); 知道如何在我的应用程序中获取地图的范围吗? TIA 史蒂文 编辑 Rob的回答指出了部分解决方案:javascr

我有一个Delphi应用程序,它在TWebBrowser中加载Google地图:

with WebBrowser1.Document as IHTMLDocument2 do
  with parentWindow do
    ExecScript('map.setCenter(new GLatLng(51.15917, 4.13889),10)', 'JavaScript');
知道如何在我的应用程序中获取地图的范围吗?
TIA
史蒂文

编辑
Rob的回答指出了部分解决方案:javascript知道坐标。我想把它们放到我的Delphi应用程序中

专家交流说明
(对戴维丁回答的长篇回答)
他们开始的时候我是专家交换的,那时还是免费的。当他们变得贪婪时,我离开了那里。 如果有人很好地帮助我解决技术问题,我不介意付钱给他喝一杯,但我绝对不想为此付钱给别人。
而他们30天的审判更糟糕。如果他们不收费,为什么我必须提交我的信用卡号?

“专家交流是互联网上最值得信赖的IT资源,我们相信您会同意”(原文如此)。嗯,我不太确定,艾伊。我更喜欢这样,感谢我能得到的任何帮助,并尽可能地给出答案(不幸的是,这并不常见)。

我建议您使用javascript知道坐标的事实,以某种方式通过调用执行脚本,以便将坐标返回到您的应用程序。然而,在看了这个线程之后,这似乎是不可能的。但是同一个线程说“您可以让JavaScript函数设置HTML隐藏字段元素的值,然后从您的Delphi代码中读取该值。”。希望这有点帮助。但绝对不是获得坐标的理想方法

编辑:对不起,我不知道当你从这里进入专家交流时,它会阻止内容。如果你从谷歌访问这个页面,它就会出现。为了节省您的时间,下面是解决方案的复制和粘贴:

DropZone: 我认为没有办法直接获得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;
}

--------------------
//JavaScript函数
函数MyFunc()
{
//通过其ID获取隐藏字段。
var elm=document.getElementById('HiddenFieldID');
如果(elm)elm.value='10086';
返回10086;
}
下面是如何完成最后一部分的示例:

在您的情况下,您将需要类似于附加代码的内容

-dZ


函数GetFieldValue(fromForm:IHTMLFormElement;
常量字段名:字符串):字符串;
变量
字段:IHTMlement;
输入字段:IHTMLINPUTTELEMENT;
selectField:IHTMLSelectElement;
textField:IHTMLTextArea元素;
开始
字段:=fromForm.Item(字段名“”)作为IHTMLElement;
结果:='';
如果指定了(field)和(field.tagName='INPUT'),则
开始
inputField:=作为IHTMLInputElement的字段;
如果inputField.type u='hidden',则
结果:=inputField.value;
结束
结束;

IHTMLWindow2。上述EE示例中的execScript
应将已执行脚本的返回值作为变量返回。但是您不必使用
IHTMLDocument2.parentWindow
属性。还有
IHTMLDocument.Script
,它是一个
IDispatch
,因此您可以通过变体后期绑定使用它:

var
  Document: IHTMLDocument;
  VScript, V: Variant;
begin
  Document := WebBrowser.Document as IHTMLDocument;
  VScript := Document.Script;
  V := VScript.HelloJavaScript();
  ShowMessage(V);
end;
HelloJavaScript是一个返回字符串的javascript函数:

<script language="javascript">
function HelloJavaScript()
{
    s = "Hello, world! (javascript)";
        alert(s);
        return s;
}
</script>

函数HelloJavaScript()
{
s=“你好,世界!(javascript)”;
警报;
返回s;
}

请参见通过谷歌查找E-E问题,答案将可见。如果推荐人是google.com,E-E会显示答案。这是正确的。然而,我更新了我的答案,为你提供了解决方案:)(希望这是你至少正在寻找的解决方案)过去我只是跳过谷歌上所有那些专家的性别变化结果,因为我认为你必须付费才能看到答案。但就在最近,我才知道,你所要做的就是把页面向下按一百万次,因为在大约10000行废话之后,答案会免费打印在页面底部。只是给那个些和我一样呆了好几个月的人一点小提示……对不起,无法访问专家交流。你不能在这里发布解决方案吗?(参见附加到OP的详细答案)David已经包含了解决方案:设置隐藏HTML表单字段的值,然后从宿主应用程序读取该元素的值。也许ExecScript应该将结果作为变量返回,但它没有。该函数被记录为始终将结果参数设置为VT_EMPTY。这很有趣,谢谢。幸运的是,IHTMLDocument.Script方法可以工作。
<script language="javascript">
function HelloJavaScript()
{
    s = "Hello, world! (javascript)";
        alert(s);
        return s;
}
</script>