如何在onItemClick上设置方法以打开Goog​​le地图?

时间:2017-11-30 16:19:44

标签: android google-maps

我正在构建一个应用,并且我遇到了谷歌地图的问题。我编写了大部分代码,但是当用户点击item(方法onItemClick)时我不知道如何设置它,在我的情况下,我在Firebase上有ListView,它显示了音乐会之旅,你可以在这里看到:{{ 3}}打开一个特定的地方并在地图上显示。例如,用户点击Anaheim,CA音乐会并显示该地点的位置。提前谢谢。

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()
{


}

}

1 个答案:

答案 0 :(得分:0)

由于您有坐标,因此可以构建listView1.SelectedItems[0].Focused = false; listView1.SelectedItems[0].Selected = false; 对象 然后你可以像这样移动地图的相机: 使用CameraPosition.Builder()构建一个新的相机位置,然后要求你的mGoogleMap动画到该位置:

LatLng(latitude, longitude)

使用该位置甚至可以在地图上放置标记:

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