使用不可点击的MapView

时间:2012-10-15 13:18:25

标签: android click android-mapview

对于我的应用程序的需要,我需要一个Mapview应该像ImageView一样。

没有默认行为的小地图(不允许用户移动它),我需要在点击它时启动Google地图。

我试过使用这样的代码:

mapView.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(Intent.ACTION_VIEW,
            Uri.parse("geo:<lat>,<long>?q=<lat>,<long>(Label+Name)"));
        startActivity(intent);
    }
});

但似乎从未调用OnClickListener,我还没有找到如何禁用mapview滚动。

感谢您的帮助。

编辑: 我已经尝试使用clickable = false,这是一件好事,因为地图现在已“禁用”而用户无法移动它,但我点击时无法启动GMaps ...

4 个答案:

答案 0 :(得分:2)

当您设置clickable(false)时,您无法使用onClick,当您设置clickable(true)时,onTouch将成为焦点。因此,覆盖onTouch然后检查其中是否您的地图视图不可点击,如果它不可点击=&gt;开始活动。

答案 1 :(得分:2)

启动Google地图使用onTouchListener,因为单击mapview时从不调用onClickListenere。我试过这样:

mapView.setOnTouchListener(new OnTouchListener() {

        public boolean onTouch(View v, MotionEvent event) {
            Toast.makeText(getApplicationContext(), "Hello", Toast.LENGTH_SHORT).show();
            Intent intent = new Intent(CurrentActivity.this, NextActivity.class);
            startActivity(intent);
            return false;
        }
    });

其中NextActivity是另一个扩展MapActivity的活动。

答案 2 :(得分:0)

您需要在mapView就绪后设置onClick侦听器

mapView?.getMapAsync {googlemap->

     googlemap. setOnMapClickListener(object : GoogleMap.OnMapClickListener {
         override fun onMapClick(p0: LatLng?) {
            //...
         }

})

答案 3 :(得分:-1)

使xml文件中的android:clickable="false"可以帮助您