2016-07-21 7 views

Antwort

1

Sie können einen Dialog mit einem Textfeld erstellen, um den Namen einzugeben. Überschreiben Sie die Marke onClick und öffnen Sie den Dialog in diesem Fall. Ändern Sie in diesem Dialogfeld den Markierungstitel.

Fügen Sie diese in Ihrem 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; 
      } 
     }); 

Und hier den Dialog:

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; 
    } 

} 

Und dann fügen Sie diese zu Ihrer Haupt-Code:

public void doChangeTitle(String title) { 
    marker.setTitle(title) 
} 

Ich bin sicher, dass es verbessert werden kann, aber es sollte funktionieren.

+0

Danke. Ich denke, es wäre hilfreich, wenn Sie einen Code hinzufügen würden. – Michal

+0

Ich habe es bearbeitet. Ich werde es wahrscheinlich später noch einmal im Android Studio bearbeiten. –

+0

Ich schaffte es damit, danke. – Michal

-1
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")); 
    } 
} 
+3

Bitte fügen Sie eine Erklärung zu Ihrer Antwort hinzu. Code-only-Antworten werden von SO abgeraten. Vielen Dank. –

Verwandte Themen