2016-07-21 9 views

答えて

1

テキストボックスを使用して名前を紹介するダイアログを作成できます。オーバーライドマークのonClickとこのイベントでダイアログを開きます。このダイアログでマーカーのタイトルを変更します。

あなたます。public void onMapReady(GoogleマップGoogleマップ)

 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

私はそれを編集しました。私はおそらく後でアンドロイドスタジオでそれを編集します。 –

+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

あなたの答えにいくつかの説明を追加してください。コードオンリーの回答はお勧めできません。ありがとうございました。 –

関連する問題