【发布时间】:2014-10-26 08:29:39
【问题描述】:
我是安卓新手。我想要这个功能, 在谷歌地图活动中,当我长按地图时,它会显示一个在地图上创建标记的警报对话框,警报对话框有两个按钮,一个用于创建标记,另一个用于取消。请任何人帮助我。如何使用警报对话框创建标记。
【问题讨论】:
标签: android google-maps marker
我是安卓新手。我想要这个功能, 在谷歌地图活动中,当我长按地图时,它会显示一个在地图上创建标记的警报对话框,警报对话框有两个按钮,一个用于创建标记,另一个用于取消。请任何人帮助我。如何使用警报对话框创建标记。
【问题讨论】:
标签: android google-maps marker
这很容易,真的。使用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));
}
}
【讨论】:
您可以将地图上的单击和长按事件处理为shown in the documentation。
地图点击/长按事件
如果您想响应用户点击地图上的某个点,您可以使用 OnMapClickListener,您可以通过调用 GoogleMap.setOnMapClickListener(OnMapClickListener) 在地图上进行设置。当用户单击(点击)地图上的某个位置时,您将收到一个 onMapClick(LatLng) 事件,该事件指示用户单击的地图上的位置。请注意,如果您需要屏幕上的相应位置(以像素为单位),您可以从地图中获取一个投影,它允许您在纬度/经度坐标和屏幕像素坐标之间进行转换。
您还可以使用 OnMapLongClickListener 侦听长按事件,您可以通过调用 GoogleMap.setOnMapLongClickListener(OnMapLongClickListener) 在地图上设置该事件。此侦听器的行为与单击侦听器类似,将通过 onMapLongClick(LatLng) 回调收到长点击事件通知。
覆盖 onMapClick(LatLng) 并使用您收到的 LatLng 创建您的标记。
【讨论】: