2017-06-18 6 views
0

私はリスト(ListFragment内)と対応する座標のリストを持っていて、それらの1つが押されたときに新しいマップアクティビティを開始したいと思います。アプリ内の特定の場所でマップアクティビティを開始するにはどうすればよいですか?

public void onListItemClick(ListView l, View v, int position, long id) { 
    Toast.makeText(getActivity(), "Item: " + locations[position], Toast.LENGTH_SHORT).show(); 
    Intent eventActivity = new Intent(getContext(), MapsActivity.class); 
    startActivity(eventActivity); 
} 

項目のいずれかをクリックしたときに、それはアプリ内で(0,0)にマップを開いて、その後、場所の名前が表示されるように現在、私はそれを持っています。どのように私は(私が持っている)場所に対応する座標にマップを開くことができますか?

Ajeet Choudharyに感謝します。解決済み。以下の解決策。

MapFragment.java

public class MapFragment extends ListFragment{ 

... 

LatLng[] coordinates = new LatLng[] { 
     new LatLng(..., ...), 
     new LatLng(..., ...), 
     new LatLng(..., ...), 
     ... 
}; 

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    ArrayAdapter<String> adapter = new MapAdapter(getActivity(), locations); 
    setListAdapter(adapter); 
} 

@Override 
public void onListItemClick(ListView l, View v, int position, long id) { 
    Toast.makeText(getActivity(), "Item: " + locations[position], Toast.LENGTH_SHORT).show(); 
    Intent eventActivity = new Intent(getContext(), MapsActivity.class); 
    eventActivity.putExtra("latlng", coordinates[position]); 
    startActivity(eventActivity); 
} 
} 

MapsActivity.java

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { 

private GoogleMap mMap; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_map); 
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); 
    mapFragment.getMapAsync(this); 
} 

@Override 
public void onMapReady(GoogleMap googleMap) { 
    mMap = googleMap; 

    // Add a marker and move the camera. 
    LatLng location = getIntent().getExtras().getParcelable("latlng"); 
    mMap.addMarker(new MarkerOptions().position(location).title("Marker")); 
    mMap.moveCamera(CameraUpdateFactory.newLatLng(location)); 
} 
} 
+1

あなたはその特定の場所または住所のLatlngしか持っていませんか? –

+0

両方。私は、場所の名前、その物理的なアドレス、およびLatLngのリストを持っています。ロケーション名と物理アドレスがリストに表示されます。 – KuroMajutsu

+0

MainActivityとは何ですか?あなたのクラスの場合は、対応するコードを質問に追加してください。 –

答えて

1

緯度経度はすでにParcableクラスをimplemnted、その意図にこれを入れて、あなたの地図の活動に送信、getIntentからその緯度経度を取得してきたように().getParcableExtra( "your_key")、メソッドがonMapReady(GoogleMap googleMap)になります(マップが既に実装されている場合)。マップにlatlngを追加します。this answerを参照してください。

+1

あなたのコードでLatLng location = new LatLng(​​、);あなたはそこであなたのラテンをやりますか? –

+0

はい、現在、私はあなたがリンクしている回答を読んでいます。 – KuroMajutsu

+0

ソリューションは機能しました!ありがとう。 – KuroMajutsu

関連する問題