让用户在 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")); 
    } 
}