让用户在 Android Studio 的 Google 地图中更改标记的标题
Let user change a title of a marker in Google Maps in Android Studio
用户是否可以通过任何方式在 Android Studio 的 Google 地图中更改标记的标题?
您可以创建一个带有文本框的对话框来介绍名称。覆盖标记的 onClick 并在此事件中打开对话框。使此对话框更改标记标题。
将此添加到您的 public void onMapReady(GoogleMap googleMap)
mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker)
EditarMark editarMark = EditarMark.newInstance(marker.getTitle());
editarMark.show(getSupportFragmentManager(), "dialog");
return false;
}
});
这里是对话框:
public class EditarMark extends DialogFragment {
private static final String MARKER="title";
public static EditarMark newInstance(String title) {
EditarMark frag = new EditarMark();
Bundle args = new Bundle();
args.putString(MARKER, title);
frag.setArguments(args);
return frag;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
LayoutInflater inflater = getActivity().getLayoutInflater();
final View dialogView = inflater.inflate(R.layout.dialog_marks, null);
final String markerTitle= getArguments().getString(
final EditText etTitle= (EditText) dialogView.findViewById(R.id.etTitle);
final AlertDialog dialogAlert= new AlertDialog.Builder(getActivity())
.setTitle("Change marker's title")
.setView(dialogView)
.setPositiveButton("Ok",null)
.setNegativeButton("Cancel",null)
.create();
dialogAlert.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
Button positive=dialogAlert.getButton(AlertDialog.BUTTON_POSITIVE);
Button negative=dialogAlert.getButton(AlertDialog.BUTTON_NEGATIVE);
positive.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((YourMapActivity)getActivity()).doChangeTitle(etTitle.getText());
dialogAlert.dismiss();
}
});
negative.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialogAlert.dismiss();
}
});
}
});
return dialogAlert;
}
}
然后将此添加到您的主代码中:
public void doChangeTitle(String title) {
marker.setTitle(title)
}
我确信它可以改进,但它应该有效。
public class MainActivity extends FragmentActivity
implements OnMapReadyCallback {
...
@Override public void onMapReady(GoogleMap map) {
map.addMarker(new MarkerOptions()
.position(new LatLng(10, 10))
.title("Hello world"));
}
}
用户是否可以通过任何方式在 Android Studio 的 Google 地图中更改标记的标题?
您可以创建一个带有文本框的对话框来介绍名称。覆盖标记的 onClick 并在此事件中打开对话框。使此对话框更改标记标题。
将此添加到您的 public void onMapReady(GoogleMap googleMap)
mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker)
EditarMark editarMark = EditarMark.newInstance(marker.getTitle());
editarMark.show(getSupportFragmentManager(), "dialog");
return false;
}
});
这里是对话框:
public class EditarMark extends DialogFragment {
private static final String MARKER="title";
public static EditarMark newInstance(String title) {
EditarMark frag = new EditarMark();
Bundle args = new Bundle();
args.putString(MARKER, title);
frag.setArguments(args);
return frag;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
LayoutInflater inflater = getActivity().getLayoutInflater();
final View dialogView = inflater.inflate(R.layout.dialog_marks, null);
final String markerTitle= getArguments().getString(
final EditText etTitle= (EditText) dialogView.findViewById(R.id.etTitle);
final AlertDialog dialogAlert= new AlertDialog.Builder(getActivity())
.setTitle("Change marker's title")
.setView(dialogView)
.setPositiveButton("Ok",null)
.setNegativeButton("Cancel",null)
.create();
dialogAlert.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
Button positive=dialogAlert.getButton(AlertDialog.BUTTON_POSITIVE);
Button negative=dialogAlert.getButton(AlertDialog.BUTTON_NEGATIVE);
positive.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((YourMapActivity)getActivity()).doChangeTitle(etTitle.getText());
dialogAlert.dismiss();
}
});
negative.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialogAlert.dismiss();
}
});
}
});
return dialogAlert;
}
}
然后将此添加到您的主代码中:
public void doChangeTitle(String title) {
marker.setTitle(title)
}
我确信它可以改进,但它应该有效。
public class MainActivity extends FragmentActivity
implements OnMapReadyCallback {
...
@Override public void onMapReady(GoogleMap map) {
map.addMarker(new MarkerOptions()
.position(new LatLng(10, 10))
.title("Hello world"));
}
}