我正在使用谷歌地图v2制作应用程序。在这个应用程序用户点击地图,我得到了lat&长 。如果用户没有点击地图,那么我是如何强迫他的,他必须在前进之前点击地图。我想在那里给他看警报框。请帮帮我。
答案 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();
我建议您展示吐司是向用户显示此类指示的更好选择。
<强>编辑:强>
要在地图上实施点击事件,您必须展开SupportMapFragment
或MapFragment
。在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)
除非用户签到,否则您可以显示吐司或通知。 通过显示通知,您可以获得更好的结果。