簡體   English   中英

Google地圖的范圍

[英]extents of Google map

我有一個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天試用期甚至更糟。 如果他們不收費,為什么我必須提交我的信用卡號?
“ Experts Exchange是Internet上最受信任的IT資源,我們相信您會同意的”(原文如此)。 好吧,我不太確定,EE。 我非常喜歡這樣,感謝我能獲得的任何幫助,並盡可能地給出答案(不幸的是,這種情況並不常見)。

我建議您使用JavaScript知道坐標的事實,以某種方式執行該調用以將坐標返回給您的應用。 但是,在查看了該線程- 專家的交流之后 ,看來這是不可能的。 但是同一線程說:“您可以讓JavaScript函數設置HTML隱藏字段元素的值,然后從Delphi代碼中讀取該值。” 這個例子是向下的。 希望這會有所幫助。 絕對不是獲取坐標的理想方法。

編輯:對不起,當您從此處進行專家交流時,我沒有意識到,它阻止了內容。 如果您從Google訪問該頁面,它將顯示出來。 為了節省您的時間,以下是該解決方案的副本和粘貼:

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;
}

這是最后一部分的示例: 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;

提到的EE示例中的IHTMLWindow2.execScript應該以Variant形式返回執行腳本的返回值。 但是您不必使用IHTMLDocument2.parentWindow屬性。 還有一個IHTMLDocument.Script ,它是一個IDispatch因此您可以通過Variant后期綁定使用它:

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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM