首页 > 解决方案 > 如何在谷歌地图的视图寻呼机中从适配器打开第一个选项?

问题描述

在此处输入图像描述我有一个地图屏幕。在底部有从适配器获取的城市列表。当我打开这个谷歌地图屏幕时,我希望地图在打开后应该从适配器聚焦到第一个位置。并且在移动列表之后它应该相应地移动。请帮我。

我在片段中调用了这个方法。

cityListViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        }

        @Override
        public void onPageSelected(int position) {

            if (markerList.isEmpty())
                initMarkers();
            else {
                refreshMarker();
                performMarkerClick(position);
            }
            isIdle = false;

        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }

});

私人无效 initMarkers() { if (courses.size() > 0) {

        int size = courses.size();
        LatLngBounds.Builder allLatLng = new LatLngBounds.Builder();

        for (int i = 0; i < size; i++) {
            double latitude = courses.get(i).getLatitude();
            double longitude = courses.get(i).getLongitude();

            LatLng courseLatLang = new LatLng(latitude, longitude);

            allLatLng.include(courseLatLang);


            if (cityListViewPager.getCurrentItem() == i) {
                if (activeMarker != null) {
                    activeMarker.remove();
                    activeMarker = null;
                }
                activeMarker = googleMap.addMarker(new MarkerOptions().position(courseLatLang)
                        .icon(Utils.bitmapMarkerFromVector(getActivity(), R.drawable.ic_location_trans_active)));
                markerList.add(activeMarker);
            } else {
                Marker inactiveMarker = googleMap.addMarker(new MarkerOptions().position(courseLatLang).
                        icon(Utils.bitmapMarkerFromVector(getActivity(), R.drawable.ic_location_trans_inactive)));
                markerList.add(inactiveMarker);
            }
        }

        setBoundCameraPosition(allLatLng.build());
        tvNoOfCourse.setText(String.valueOf(markerList.size()));

    }


}


void refreshMarker() {
    for (int i = 0; i < markerList.size(); i++) {
        MarkerOptions markerOptions;
        markerList.get(i).remove();

        if (cityListViewPager.getCurrentItem() == i) {

            markerOptions = new MarkerOptions()
                    .icon(Utils.bitmapMarkerFromVector(getActivity(), R.drawable.ic_location_trans_active))
                    .position(markerList.get(i).getPosition());

        } else {
            markerOptions = new MarkerOptions()
                    .icon(Utils.bitmapMarkerFromVector(getActivity(), R.drawable.ic_location_trans_inactive))
                    .position(markerList.get(i).getPosition());
        }

        Marker marker = googleMap.addMarker(markerOptions);
        markerList.set(i, marker);
    }
    isIdle = false;
}

私人无效 performMarkerClick(int 位置){

    CameraPosition camPos = googleMap.getCameraPosition();
    camPos = new CameraPosition(markerList.get(position).getPosition(), camPos.zoom, camPos.tilt, camPos.bearing);

    googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(camPos));
}

标签: android

解决方案


推荐阅读