2017-11-30 3 views
1

私はアプリを構築していますが、私はGoogle Mapsの問題を抱えています。私はほとんどのコードを書いていますが、ユーザーが項目(メソッドonItemClick)をクリックしたときの設定方法はありません。私の場合FirebaseのListViewにコンサートのツアーを表示しています。ここに表示されます:my tours listview特定の場所を開いて地図上に表示します。例えば、ユーザーはアナハイム、カリフォルニア州のコンサートをクリックし、その場所がどこにあるかを示します。前もって感謝します。Googleマップを開くにはどのようにonItemClickメソッドを設定するのですか?

public class MapActivity extends AppCompatActivity implements OnMapReadyCallback { 



private static final int REQUEST_LOCATION_PERMISSION = 10; 
private GoogleMap.OnMapClickListener mCustomOnMapClickListener; 

private GoogleMap mGoogleMap; 
private MapFragment mMapFragment; 
@BindView(R.id.lvTours) ListView lvTours; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_map); 
    this.initialize(); 
} 



public void initialize(){ 
    this.mMapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.fGoogleMap); 
    this.mMapFragment.getMapAsync(this); 
    this.mCustomOnMapClickListener = new GoogleMap.OnMapClickListener() { 
     @Override 
     public void onMapClick(LatLng latLng) { 
      MarkerOptions newMarkerOptions = new MarkerOptions(); 
      newMarkerOptions.icon(BitmapDescriptorFactory.fromResource(R.mipmap.tour)); 
      newMarkerOptions.title("Tour"); 
      newMarkerOptions.snippet("It' was here!"); 
      newMarkerOptions.position(latLng); 
      mGoogleMap.addMarker(newMarkerOptions); 
     } 
    }; 
} 

@Override 
public void onMapReady(GoogleMap googleMap) { 
    this.mGoogleMap = googleMap; 
    UiSettings uiSettings = this.mGoogleMap.getUiSettings(); 
    uiSettings.setZoomControlsEnabled(true); 
    uiSettings.setMyLocationButtonEnabled(true); 
    uiSettings.setZoomGesturesEnabled(true); 
    this.mGoogleMap.setOnMapClickListener(this.mCustomOnMapClickListener); 
} 




private boolean hasLocationPermission() { 

    String LocationPermission = android.Manifest.permission.ACCESS_FINE_LOCATION; 
    int status = ContextCompat.checkSelfPermission(this, LocationPermission); 
    if (status == PackageManager.PERMISSION_GRANTED) { 

     this.mGoogleMap.setMyLocationEnabled(true); 

     return true; 

    } 
    return false; 
} 

private void requestPermission() { 
    String[] permission = new String[]{Manifest.permission.ACCESS_FINE_LOCATION}; 
    ActivityCompat.requestPermissions(MapActivity.this, permission, REQUEST_LOCATION_PERMISSION); 
} 

@OnItemClick(R.id.lvTours) 
public void onClick() 
{ 


} 

}

答えて

0

あなたの座標を持っているので、あなたがLatLng(latitude, longitude)オブジェクト を構築することができ、あなたは、このようなあなたのマップのカメラを移動することができます CameraPosition.Builderを(使用して、新しいカメラ位置を構築)し、

:あなたも、地図上のマーカーを置くことができ、その位置を使用して

CameraPosition position = CameraPosition.builder() 
       .target(location) 
       .zoom(16f) 
       .bearing(0.0f) 
       .tilt(0.0f) 
       .build(); 
mGoogleMap.animateCamera(CameraUpdateFactory.newCameraPosition(position), null) 

:その位置にアニメーション化するために、あなたのmGoogleMapに頼みます

mGoogleMap.addMarker(new MarkerOptions().position(position) 
      .title("some title")); 
+0

ようこそカメラの仕組みに関する詳細情報が必要な場合は、しばらく時間を取って公式文書[here](https://developers.google.com/maps/documentation/android-api/views) –

+0

を読むことを強くお勧めします。有益ですが、1つの問題が残ります。私はあなたのコードの最後に表示されるメソッドonItemClickを持っています。今、ツアーのアイテム、つまりオブジェクトのリストをクリックするたびに、その場所の地図を表示したいと思います。あなたはそれをする方法を知っていますか? – JoelTRowe

+0

ハム、私はバターナイフを使用していないので、私はKotlinを使用しています。しかし、間違ったことを思い出さなければ、あなたはそうすることができます: '@OnItemClick(R.id.listView) public void onItemClick(AdapterView アダプタ、int位置){ } '。あなたのクリックされた要素の位置を持っていれば大丈夫でしょう –

関連する問題