【问题标题】:Let user change a title of a marker in Google Maps in Android Studio让用户在 Android Studio 的 Google 地图中更改标记的标题
【发布时间】:2016-07-21 09:41:51
【问题描述】:

有什么方法可以让用户在 Android Studio 的 Google 地图中更改标记的标题?

【问题讨论】:

    标签: android google-maps marker


    【解决方案1】:

    您可以创建一个带有文本框的对话框来介绍名称。覆盖标记的 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)
    }
    

    我确信它可以改进,但它应该可以工作。

    【讨论】:

    • 谢谢。我认为如果您添加代码会有所帮助。
    • 我已经编辑过了。稍后我可能会在 android studio 中再次对其进行编辑。
    • 我很乐意提供帮助 :)
    【解决方案2】:
    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")); 
        } 
    }
    

    【讨论】:

    • 请为您的答案添加一些解释。 SO不鼓励仅使用代码的答案。谢谢。
    猜你喜欢
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    • 2018-04-27
    • 2018-07-03
    • 2014-03-22
    • 2013-01-14
    相关资源
    最近更新 更多