簡體   English   中英

在C#Web瀏覽器中自動執行Google Maps(正確執行JavaScript)

[英]Automating Google Maps in C# Web Browser (issue executing javascript properly)

使用API

我目前正在嘗試在C#中使用網絡瀏覽器來加載google地圖並自動關注我的當前位置,但是由於某種原因,我無法使其正常工作。 這個想法很簡單。 加載Google地圖,然后執行腳本以關注我當前的位置:

mapBrowser.Document.InvokeScript("mylocation.onButtonClick");

或者,通過HtmlElement調用按鈕單擊:

HtmlElement myLocationButton = mapBrowser.Document.GetElementById("mylocation");
myLocationButton.InvokeMember("click");

但是,當然,這兩種方法均無法正常工作,返回的坐標不正確,地圖也從未真正聚焦。 關於如何正確解決此問題的任何想法? 直到實際加載文檔后,才會調用腳本:

private void mapBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        if(mapBrowser.Url.ToString() == "https://www.google.com/maps/preview/")
        {
            try
            {
                //HtmlElement myLocationButton = mapBrowser.Document.GetElementById("mylocation");
                //myLocationButton.InvokeMember("click");
                mapBrowser.Document.InvokeScript("mylocation.onButtonClick");
                //mapBrowser.Document.InvokeScript("focus:mylocation.main");
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error Invoking Script: " + ex.Message);
            }
        }
    }

所以我不認為這是造成我問題的原因。 更令人沮喪的是,如果我手動單擊該按鈕,自動對焦效果會很好。

任何幫助表示贊賞,謝謝!

(注意,您可能必須進入IE並允許Google地圖訪問您的位置,才能正確復制此問題)

我幾次遇到問題,即WebBrowser控件使用的是IE的舊版本。 您需要修改注冊表以使其使用較新版本的IE。 我在IE 8和IE 9上都嘗試了“ https://www.google.com/maps/preview/ ”,但它給了我一個錯誤,但在IE 10上卻可以使用。

請參閱: http : //weblog.west-wind.com/posts/2011/May/21/Web-Browser-Control-Specifying-the-IE-Version

暫無
暫無

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

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