我有一个 VB.NET WinForms 应用程序。我使用 webview2 控件作为网络浏览器。其实我不需要进行一般的浏览,而是我只需要打开谷歌地图,然后输入两个位置,然后获取我输入的两个位置之间的谷歌地图距离。但是虽然我的 webview2 控件显示了完整的 Google 地图,并且用户可以获取任意两个位置之间的路径,如图所示:
但是有一个问题:我需要从 webview2 控件中获取三个值并将它们显示在三个单独的文本框中,即
位置1:(字符串格式)
位置2:(字符串格式)
距离:7.2公里(数字格式)
我需要这三个值在单独的文本框中显示它们,然后我需要将这三个值保存在数据库中。
我为一家运输公司开发了这个应用程序,上面解释的三个值将构成一条完整的运输路线。
我需要使用其他控件来代替 webview2 来满足我的需求吗?
我想我实际上已经弄清楚了我需要的东西。
如果有人可以在这方面提供帮助,我将非常非常感激。
Imports System.Text
Imports Microsoft.Web.WebView2.Core
Private Sub txtSearc_KeyDown(sender As Object, e As KeyEventArgs) Handles txtSearch.KeyDown
If e.KeyCode = Keys.Enter Then
Try
Dim queryaddress As New System.Text.StringBuilder
queryaddress.Append("https://www.google.com/maps?q=")
If txtSearch.Text <> "" Then
queryaddress.Append(txtSearch.Text + "," & "+")
End If
MyWebView_.CoreWebView2.Navigate(txtSearch.Text)
Catch ex As Exception
Exit Sub
End Try
End If
End Sub
这是一个完美的案例,您应该使用 API 而不是进行网络抓取(就像您现在所做的那样)。 Google 地图可以随时更改其 UI,这会破坏您的网络抓取方法。此外,UI 被设计为人类可读,而不是机器可读(这使得机器难以解析)。
相反,您应该使用 Google Maps Routes API。您的应用程序可以直接与 Google 地图对话,Google 将以机器可读的形式告诉您所需的所有信息。当然,缺点是您需要根据每个 API 请求向 Google 付费,但由于您似乎创建了一个商业产品,因此您可以将该费用转嫁给您的客户。
(注:我与 Google 没有任何关系。)