【问题标题】:longclick on map to open alert dialog to create a marker in the Google map长按地图以打开警报对话框以在 Google 地图中创建标记
【发布时间】:2014-10-26 08:29:39
【问题描述】:

我是安卓新手。我想要这个功能, 在谷歌地图活动中,当我长按地图时,它会显示一个在地图上创建标记的警报对话框,警报对话框有两个按钮,一个用于创建标记,另一个用于取消。请任何人帮助我。如何使用警报对话框创建标记。

【问题讨论】:

    标签: android google-maps marker


    【解决方案1】:

    这很容易,真的。使用onMapLongClickListener 聆听长按并显示对话框,如果按下肯定按钮则创建一个标记。这是一个例子:

    public class MainActivity extends FragmentActivity implements 
            DialogInterface.OnClickListener {
    
        private GoogleMap mMap;
        private LatLng mClickPos;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            // Init activity and map
    
            mMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() {
                @Override
                public void onMapLongClick(LatLng latLng) {
                    mClickPos = latLng;
                    new AlertDialog.Builder(MainActivity.this)
                            .setPositiveButton("Create", MainActivity.this)
                            .setNegativeButton("Cancel", null)
                            .show();
                }
            });
        }
    
        @Override
        public void onClick(DialogInterface dialog, int which) {
            mMap.addMarker(new MarkerOptions().position(mClickPos));
        }
    
    }
    

    【讨论】:

      【解决方案2】:

      您可以将地图上的单击和长按事件处理为shown in the documentation

      地图点击/长按事件

      如果您想响应用户点击地图上的某个点,您可以使用 OnMapClickListener,您可以通过调用 GoogleMap.setOnMapClickListener(OnMapClickListener) 在地图上进行设置。当用户单击(点击)地图上的某个位置时,您将收到一个 onMapClick(LatLng) 事件,该事件指示用户单击的地图上的位置。请注意,如果您需要屏幕上的相应位置(以像素为单位),您可以从地图中获取一个投影,它允许您在纬度/经度坐标和屏幕像素坐标之间进行转换。

      您还可以使用 OnMapLongClickListener 侦听长按事件,您可以通过调用 GoogleMap.setOnMapLongClickListener(OnMapLongClickListener) 在地图上设置该事件。此侦听器的行为与单击侦听器类似,将通过 onMapLongClick(LatLng) 回调收到长点击事件通知。

      覆盖 onMapClick(LatLng) 并使用您收到的 LatLng 创建您的标记。

      【讨论】:

        猜你喜欢
        • 2013-07-19
        • 2020-07-07
        • 2018-01-28
        • 2011-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-07
        • 1970-01-01
        相关资源
        最近更新 更多