2016-07-21 38 views

回答

1

您可以使用文本框創建對話框來介紹名稱。覆蓋標記的onClick並在此事件中打開對話框。使這個對話框更改標記標題。

公共無效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) 
} 

我相信它可以改進,但它應該工作。

+0

謝謝。如果您添加了代碼,我認爲這會很有幫助。 – Michal

+0

我編輯過它。我稍後可能會在android studio中再次編輯它。 –

+0

我管理它,謝謝。 – 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

請給你的答案添加一些解釋。在SO上不鼓勵使用僅有代碼的答案。謝謝。 –