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

如何在Android Studio中通过WebView实现带搜索功能的Google Maps?

嘿,我来一步步帮你搞定这个WebView集成谷歌地图的事儿,完全从入门级讲起,保证代码都是当前可用的,避开那些老旧废弃的写法~

第一步:先搞定基础配置(权限和布局)

首先得给App开网络权限,因为WebView要联网加载谷歌地图网页。打开你的AndroidManifest.xml,在<application>标签外面加上这两行:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 可选,用来检测网络状态,方便提示用户 -->

然后给你要放地图的Activity写个布局文件(比如activity_maps_web.xml),就放一个占满屏幕的WebView就行:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <WebView
        android:id="@+id/maps_webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>
第二步:在Activity里初始化WebView(核心步骤)

接下来是关键的Java代码,逻辑通用,你也可以轻松转成Kotlin。创建一个MapsWebActivity.java,代码如下:

import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import androidx.appcompat.app.AppCompatActivity;

public class MapsWebActivity extends AppCompatActivity {
    private WebView mapsWebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps_web);

        mapsWebView = findViewById(R.id.maps_webview);
        
        // 配置WebView的核心参数,这些是谷歌地图正常运行的必要设置
        WebSettings webSettings = mapsWebView.getSettings();
        webSettings.setJavaScriptEnabled(true); // 必须开!谷歌地图网页版完全依赖JavaScript
        webSettings.setDomStorageEnabled(true); // 启用DOM存储,保存地图的缓存和状态
        webSettings.setLoadWithOverviewMode(true); // 让地图自适应屏幕宽度
        webSettings.setUseWideViewPort(true); // 支持宽视图,避免显示不全

        // 设置WebViewClient,让网页在WebView内部打开,而不是跳转到系统浏览器
        mapsWebView.setWebViewClient(new WebViewClient() {
            // 可选:页面开始加载时可以显示个加载进度条
            @Override
            public void onPageStarted(WebView view, String url, android.graphics.Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
                // 比如这里可以显示ProgressBar,提示用户正在加载
            }

            // 页面加载完成后可以隐藏加载提示
            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                // 隐藏ProgressBar的逻辑写在这
            }
        });

        // 直接加载谷歌地图官网,自带完整的搜索功能
        // 如果你想默认打开某个地点,可以加参数,比如:"https://www.google.com/maps?q=北京天安门"
        String mapsUrl = "https://www.google.com/maps";
        mapsWebView.loadUrl(mapsUrl);
    }

    // 处理返回键:让WebView可以回退到上一页,而不是直接关闭Activity
    @Override
    public void onBackPressed() {
        if (mapsWebView.canGoBack()) {
            mapsWebView.goBack();
        } else {
            super.onBackPressed();
        }
    }
}
第三步:几个重要的注意事项
  • 关于计费:网页版谷歌地图的搜索功能,个人非商用使用一般不需要绑定Google Cloud计费账户(官网本身的搜索是正常可用的),但如果是商业用途,记得去看谷歌的官方条款,避免违规。
  • 兼容性优化:如果你的App要适配Android 11及以上,记得在AndroidManifest.xml的<application>标签里加上这个查询权限,确保WebView能正常访问谷歌地图域名:
<queries>
    <intent>
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="https" android:host="www.google.com" />
    </intent>
</queries>
  • 性能提升:可以在Activity的Manifest配置里开启硬件加速,让地图加载更流畅:
<activity
    android:name=".MapsWebActivity"
    android:hardwareAccelerated="true" /> <!-- 默认是开启的,但明确写出来更保险 -->

这样配置完,你打开这个Activity就能看到带完整搜索功能的谷歌地图了,和你在手机浏览器里用的体验几乎一样~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 00:47:32