gpt4 book ai didi

android - MapView.onMapReady 从未在 Fragment 中调用以在 MapView 中加载 Google map

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:36:01 26 4
gpt4 key购买 nike

我将尝试在名为 RoeteFragment 的 fragment 上显示我的 Android 应用程序中的 map 。如果我调试我的代码,我会看到方法 onMapReady 从未被调用,因此 map 不会加载。

该 fragment 按需要实现了 OnMapReadyCallback,在 onCreateView 中,我获得了 MapView 并调用了 getMapAsync。如果我在那个方法上放置一个断点,它总是会被击中,onMapReady 中的断点永远不会被击中。没有抛出异常。

我在文件 res/values/google_maps_api.xml 中还有一个有效的 Google Maps API key 。

这是我的代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<com.google.android.gms.maps.MapView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/map" />

</RelativeLayout>
public class RoeteFragment extends Fragment implements OnMapReadyCallback {

private MapView mapView;
private static Roete _roete;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_roete, container, false);
mapView = (MapView) view.findViewById(R.id.map);
mapView.getMapAsync(this);
return view;
}

@Override
public void onMapReady(GoogleMap googleMap) {

if (_roete != null && _roete.getAankomstLocatie() != null && _roete.getVertrekLocatie() != null) {
LatLng aankomst = new LatLng(_roete.getAankomstLocatie().getLatitude(), _roete.getAankomstLocatie().getLongitude());
googleMap.addMarker(new MarkerOptions().position(aankomst).title("aankomst"));
googleMap.moveCamera(CameraUpdateFactory.newLatLng(aankomst));

LatLng vertrek = new LatLng(_roete.getVertrekLocatie().getLatitude(), _roete.getVertrekLocatie().getLongitude());
googleMap.addMarker(new MarkerOptions().position(vertrek).title("vertrek"));
googleMap.moveCamera(CameraUpdateFactory.newLatLng(vertrek));
}
}

public static Fragment newInstance() {
return new RoeteFragment ();
}

public static Fragment newInstance(Roete roete) {
_roete = roete;
return newInstance();
}
}

你能在我的代码中提交错误吗?

最佳答案

阅读MapView documentation .特别是:

Users of this class must forward all the life cycle methods from the Activity or Fragment containing this view to the corresponding ones in this class. In particular, you must forward on the following methods:

  • onCreate(Bundle)
  • onResume()
  • onPause()
  • onDestroy()
  • onSaveInstanceState()
  • onLowMemory()

关于android - MapView.onMapReady 从未在 Fragment 中调用以在 MapView 中加载 Google map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36809284/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com