You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET中调用Google Maps遇脚本错误求助(Edge为最新版)

问题排查与解决

1. URL拼接不规范

你的代码在拼接地址时,每个非空字段后都会追加,+,导致最终URL末尾可能多出一个无效的+(比如当street不为空时,URL会变成https://maps.google.com/maps?q=state,+city,+street,+),这种格式错误会引发页面加载异常。

修复代码:用String.Join拼接非空字段,再统一做URL编码:

Private Sub btnMap_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMap.Click
    Dim addressParts As New List(Of String)
    If Not String.IsNullOrEmpty(txtstate.Text) Then
        addressParts.Add(txtstate.Text)
    End If
    If Not String.IsNullOrEmpty(txtcity.Text) Then
        addressParts.Add(txtcity.Text)
    End If
    If Not String.IsNullOrEmpty(txtstreet.Text) Then
        addressParts.Add(txtstreet.Text)
    End If

    If addressParts.Count > 0 Then
        Dim encodedAddress As String = Uri.EscapeDataString(String.Join(", ", addressParts))
        Dim mapUrl As String = $"https://maps.google.com/maps?q={encodedAddress}"
        browser.Navigate(mapUrl)
    End If
End Sub

2. WebBrowser控件内核兼容性问题

你代码里的browser如果是默认的WebBrowser控件,它默认用的是IE内核,不是Edge内核。IE对现代网页的兼容性极差,根本无法正常加载新版Google Maps,这是脚本错误的核心原因。

解决办法:

  • 优先改用Edge WebView2控件

    1. 在Visual Studio的NuGet包管理器中安装Microsoft.Web.WebView2
    2. 把窗体上的WebBrowser替换为WebView2控件
    3. 修改导航代码为WebView21.CoreWebView2.Navigate(mapUrl),注意要先在窗体加载时调用WebView21.EnsureCoreWebView2Async()完成初始化
  • 临时方案:强制WebBrowser用最新IE模式
    在项目的app.config中添加以下配置,让IE以最高版本渲染:

    <configuration>
      <system.windows.forms>
        <webBrowser>
          <browserEmulation mode="11001" />
        </webBrowser>
      </system.windows.forms>
    </configuration>
    

    注:此方案仅能部分改善兼容性,仍不如WebView2稳定。

3. 未对用户输入做URL编码

原代码直接拼接用户输入的文本,若输入包含空格、特殊字符(比如&、%),会破坏URL结构,导致加载失败。修复后的代码用Uri.EscapeDataString对地址做了编码,避免这类问题。

内容的提问来源于stack exchange,提问作者roy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 10:14:57