2016-12-18 4 views
0

私はマップと編集テキストとボタンを備えたGoogleマップアクティビティを持っています。Googleマップの2番目のマーカーをユーザー入力時にアンドロイドのアクティビティに追加します

The screenshot of the activity that I have ready at the moment.

この活動が開かれるたびにマーカーがマップに追加されます。

私はさらに、この編集テキストにアドレスを入力してボタンをクリックすると、以前のマーカーを消去せずに同じマップに別のマーカーが追加され、マップにポリラインが作成されます2つのマーカー。

私は2番目のマーカーを追加しようとしましたが、アプリがクラッシュしてしまいました。私はそれを行うことができません。あなたが2番目のマーカーを追加するのを手助けできるなら、大きな助けになるでしょう。ここで

は、アクティビティコードです:

public class MapsActivity extends AppCompatActivity implements OnMapReadyCallback { 

    private GoogleMap mMap; 
    private EditText findRouteEdittext; 
    private Button findRouteButton; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_maps); 
     // Obtain the SupportMapFragment and get notified when the map is ready to be used. 
     SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
       .findFragmentById(R.id.map); 
     mapFragment.getMapAsync(this); 

    } 

    @Override 
    public void onMapReady(GoogleMap googleMap) { 

     Intent intent = getIntent(); 
     Geocoder coder = new Geocoder(this); 
     List<Address> addressList; 
     LatLng coord = null; 

     String completeAddress = intent.getStringExtra("completeAddress"); 

     try { 
      addressList = coder.getFromLocationName(completeAddress, 5); 
      if (addressList != null) { 

       Address location = addressList.get(0); 

       coord = new LatLng(location.getLatitude(), location.getLongitude()); 
      } 

     } catch (Exception ex) { 

      ex.printStackTrace(); 
     } 

     mMap = googleMap; 

     MarkerOptions mMarkerOptions = new MarkerOptions(); 
     mMarkerOptions.position(coord); 
     mMarkerOptions.title(completeAddress); 
     mMap.addMarker(mMarkerOptions).showInfoWindow(); 
     mMap.moveCamera(CameraUpdateFactory.newLatLng(coord)); 
     mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(coord, 14.0f)); 
    } 
} 

EDIT 1


私は最終的に自分自身を追加する場所で、それは基本的にマイナーなエラーだったが、ちょうどそう答えを得ました他の人が追加する場所を知っている私はここで答えを更新します:

public class MapsActivity extends AppCompatActivity implements OnMapReadyCallback { 

     private GoogleMap mMap; 
     private EditText findRouteEdittext; 
     private Button findRouteButton; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_maps); 
      // Obtain the SupportMapFragment and get notified when the map is ready to be used. 
      SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
        .findFragmentById(R.id.map); 
      mapFragment.getMapAsync(this); 

      findRouteButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       searchString = findRouteEdittext.getText().toString().toLowerCase().trim(); 


       if (searchString.equals("")){ 
//     findRouteEditTextInputLayout.setErrorEnabled(true); 
//     findRouteEditTextInputLayout.setError("Enter a location or City!"); 
        //use snackbar to show something. 

       } 
       else{ 

        coder2 = new Geocoder(MapsActivity.this); 
        coord2 = null; 

        try { 
         addressList2 = coder2.getFromLocationName(searchString, 5); 
         if (addressList2 != null) { 

          Address location = addressList2.get(0); 

          coord2 = new LatLng(location.getLatitude(), location.getLongitude()); 
         } 

        } catch (Exception ex) { 

         ex.printStackTrace(); 
        } 


        if (coord2!=null && coord!=null) { 
         mMap.clear(); 
         mMarkerOptions2 = new MarkerOptions(); 
         mMarkerOptions2.position(coord2); 
         mMarkerOptions2.title(searchString); //this is the address of the new string entered by the user 
         mMap.addMarker(mMarkerOptions2).showInfoWindow(); 

         mMarkerOptions3 = new MarkerOptions(); 
         mMarkerOptions3.position(coord); 
         mMarkerOptions3.title(completeAddress); //this is the address of the original string received from intent 
         mMap.addMarker(mMarkerOptions3).showInfoWindow(); 
        } 
       } 

     } 

     @Override 
     public void onMapReady(GoogleMap googleMap) { 

      Intent intent = getIntent(); 
      Geocoder coder = new Geocoder(this); 
      List<Address> addressList; 
      LatLng coord = null; 

      String completeAddress = intent.getStringExtra("completeAddress"); 

      try { 
       addressList = coder.getFromLocationName(completeAddress, 5); 
       if (addressList != null) { 

        Address location = addressList.get(0); 

        coord = new LatLng(location.getLatitude(), location.getLongitude()); 
       } 

      } catch (Exception ex) { 

       ex.printStackTrace(); 
      } 

      mMap = googleMap; 

      MarkerOptions mMarkerOptions = new MarkerOptions(); 
      mMarkerOptions.position(coord); 
      mMarkerOptions.title(completeAddress); 
      mMap.addMarker(mMarkerOptions).showInfoWindow(); 
      mMap.moveCamera(CameraUpdateFactory.newLatLng(coord)); 
      mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(coord, 14.0f)); 
     } 
    } 
+0

あなたはfindRouteButtonのonclickリスナーについて言及していません。 – Murali

+0

あなたがしたいことを書き直してあなたに見せることができたなら、私のために働いていなかったコードをすべて削除しました。しかし、それはちょうど仕事をしなかったので、私は完璧に働いているものを投稿し、それをすべて削除しました。 –

答えて

0

既にLocationオブジェクトがある場合は、以下のコードを使用して新しいマーカーをマップに追加します。

latitude = location.getLatitude(); 
longitude = location.getLongitude(); 
LatLng latLng = new LatLng(latitude, longitude); 
googleMap.addMarker(new MarkerOptions().position(latLng)); 

このコードをクリックリスナーの横に追加します。

+0

私はすでにそれを考え出していましたが、軽微なエラーがありましたが、どちらに追加している間に問題を抱えていたので、「どのように」「どこに」コードを追加するかを尋ねていませんでした。エラーのみ。 お時間をいただきありがとうございます。 –

+0

お手伝いをしてうれしいです。 – Murali

関連する問題