Android获得点击与否谷歌地图v2

时间:2013-11-25 06:40:16

标签: android google-maps

我正在使用谷歌地图v2制作应用程序。在这个应用程序用户点击地图,我得到了lat&长 。如果用户没有点击地图,那么我是如何强迫他的,他必须在前进之前点击地图。我想在那里给他看警报框。请帮帮我。

3 个答案:

答案 0 :(得分:2)

您可以在活动中向用户显示提醒,在onCreate()中调用以下方法,如下所示:

private void showAlert()
{
AlertDialog.Builder ab = new AlertDialog.Builder(
                            SurpriseSetting.this);
                    ab.setTitle("Hello!!");
                    ab.setMessage("Please Click on Map");
                    ab.setNeutralButton("Ok",
                            new DialogInterface.OnClickListener() {

                                @Override
                                public void onClick(DialogInterface dialog,
                                        int which) {

                                    dialog.dismiss();
                                }
                            });
                    ab.show();
  }

或者你可以Toast

 Toast.makeText(m_context, "Please click on Map", Toast.LENGTH_LONG).show();

我建议您展示吐司是向用户显示此类指示的更好选择。

<强>编辑:

要在地图上实施点击事件,您必须展开SupportMapFragmentMapFragment。在onCreateView()中,您必须将自己的MapView打包在自定义的FrameLayout中(例如,下面是类TouchableWrapper),您可以在其中拦截触摸事件并识别地图被窃听与否。如果您的onCameraChange被调用,只需检查地图视图是否被按下(例如,下面是变量mMapIsTouched)。

示例代码:

更新1:

  • getView()
  • 中返回原始创建的视图
  • 使用dispatchTouchEvent()代替onInterceptTouchEvent()

自定义FrameLayout

private class TouchableWrapper extends FrameLayout {
    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
    switch (ev.getAction()) {
        case MotionEvent.ACTION_DOWN:
        mMapIsTouched = true;
        break;

    case MotionEvent.ACTION_UP:
        mMapIsTouched = false;
        break;
        }

        return super.dispatchTouchEvent(ev);
    }
    }

在您自定义的MapFragment

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
    mOriginalContentView = super.onCreateView(inflater, parent, savedInstanceState);

    mTouchView = new TouchableWrapper(getActivity());
    mTouchView.addView(mOriginalContentView);

    return mTouchView;
}

@Override
public View getView() {
    return mOriginalContentView;
}

在相机中更改回调方法:

private final OnCameraChangeListener mOnCameraChangeListener = new OnCameraChangeListener() {
    @Override
    public void onCameraChange(CameraPosition cameraPosition) {
        if (!mMapIsTouched) {
            refreshClustering(false);
        }
    }
};

答案 1 :(得分:1)

你可以简单地检查你是否没有lat / lng(即用户没有点击地图)所有其他动作应该只显示任何警告信息或toast说“你必须先点击地图才能做某事”。

所以在任何其他动作上点击地图你可以检查lat / long是否为null然后显示警告。

答案 2 :(得分:0)

除非用户签到,否则您可以显示吐司通知。 通过显示通知,您可以获得更好的结果。