无法在 webview 中移动地图

Posted

技术标签:

【中文标题】无法在 webview 中移动地图【英文标题】:Cannot move map in webview 【发布时间】:2017-07-02 03:27:13 【问题描述】:

一个活动(MainActivity)调用一个片段(MainPage)。该片段旨在打开本地资产 webview 文件 Map.html。它按预期工作,但地图不能用指尖移动。此功能在 Map.html 打开浏览器时可用。但是,左上角的放大缩小点击按钮确实有效。

是否有东西覆盖在 webview 上以便可以看到但不能滑动?

初始的AppCompatActivity(支持ActionBar)由MainActivity给出:

public class MainActivity extends AppCompatActivity implements View.OnClickListener

    //list of private declarations

    @Override
    public void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    // a lot of other stuff relating to navigation drawer

    // calls MainPage Fragment
    android.support.v4.app.Fragment fragment = new MainPage();
                FragmentManager fragmentManager = getSupportFragmentManager();
                fragmentManager.beginTransaction()
                        .replace(R.id.content_frame, fragment)
                        .addToBackStack("tag")
                        .commit();
    

其中的 xml 给出为:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_centerVertical="true"
    android:layout_
    android:layout_
    android:orientation="horizontal">

    <android.support.v4.widget.DrawerLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/drawer_layout"
        android:layout_
        android:layout_>

    <WebView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_
        android:layout_
        android:id="@+id/content_frame">
    </WebView>

        <ListView
            android:id="@+id/left_drawer"
            android:layout_
            android:layout_
            android:layout_gravity="start"
            android:choiceMode="singleChoice"
            android:divider="@android:color/transparent"
            android:dividerHeight="0dp"
            android:background="#111">
        </ListView>

    </android.support.v4.widget.DrawerLayout>

</LinearLayout>

最终调用MainPage,给出为:

public class MainPage extends android.support.v4.app.Fragment implements GeolocationPermissions.Callback 

    public MainPage() 
    

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
        View rootView = inflater.inflate(R.layout.activity_main, container, false);
        WebView webview = (WebView) rootView.findViewById(R.id.content_frame);
        webview.getSettings().setjavascriptEnabled(true);
        webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
        webview.getSettings().setGeolocationEnabled(true);
        GeoClient geo = new GeoClient();
        webview.setWebChromeClient(geo);
        String origin = "";
        geo.onGeolocationPermissionsShowPrompt(origin, this);
        webview.loadUrl("file:///android_asset/Map.html");
        return rootView;
    

【问题讨论】:

【参考方案1】:

您可能需要设置一个 onclicklistener。对于谷歌地图,我就是这样做的。应该差不多吧。

添加实现,@override 函数,并设置 onclick 监听器。我不确定这是否会起作用,因为您有时会使用 HTML。

public class MainActivity extends FragmentActivity implements View.OnClickListener,
        GoogleMap.OnMapClickListener 

然后当你启动它时,设置 onmap 点击监听器。

    gMap.setOnMapClickListener(this);// add the listener for click on gmap object

最后,添加这个@override:

@Override
public void onMapClick(LatLng point) 
//What code if any happens when user clicks on map

【讨论】:

以上是关于无法在 webview 中移动地图的主要内容,如果未能解决你的问题,请参考以下文章

无法在地图视图中快速移动

如何在移动 android/iOs(本机应用程序)中关闭 webview

是否可以使用 MapField 在黑莓中移动地图。

在android webview中使用apk扩展文件中的图像

谷歌地图应用无法在移动设备上打开网页链接

嵌入式谷歌地图无法在 WebView 中获取当前位置