android - 如何在谷歌地图的视图寻呼机中从适配器打开第一个选项?
问题描述
我有一个地图屏幕。在底部有从适配器获取的城市列表。当我打开这个谷歌地图屏幕时,我希望地图在打开后应该从适配器聚焦到第一个位置。并且在移动列表之后它应该相应地移动。请帮我。
我在片段中调用了这个方法。
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));
}
解决方案
推荐阅读
- spring - 使用 Spring-boot 创建 Shared-Durable 订阅者
- css - 尽管定义了表格并应用固定表格布局,但表格的每一列都有不同的宽度
- angular - angular 6 pwa 无法正常工作
- java - 如何在 Android 中以编程方式将图标设置为警报对话框
- swift - Swift 4 - 创建具有 2 种背景颜色的 UIView
- python - ASCII Characters Text Align
- swift - 按下按钮时,如何将表格视图中单元格的索引从一个视图控制器传递到下一个视图控制器?
- java - 最新版 Android Studio 中文本视图的文本对齐选项在哪里?
- apache - 安装后apache上的语法错误让加密
- frameworks - 机器人框架-如何用包含文件列表的 .csv 文件替换“目录中的列表文件”关键字