【发布时间】:2016-04-23 09:58:46
【问题描述】:
我将尝试在我的 Android 应用程序中在名为 RoeteFragment 的片段上显示地图。如果我调试我的代码,我会看到方法 onMapReady 从未被调用,因此地图将不会加载。
片段实现OnMapReadyCallback 就像需要的那样,在onCreateView 我得到MapView 并调用getMapAsync。如果我在该方法上放置断点,它将始终被命中,onMapReady 内的断点从未被命中。没有抛出异常。
我在文件 res/values/google_maps_api.xml 中还有一个有效的 Google Maps API 密钥。
这是我的代码:
<?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();
}
}
你能在我的代码中提交错误吗?
【问题讨论】:
-
尝试使用支持地图片段。它也可以在片段中工作。 developers.google.com/android/reference/com/google/android/gms/…
-
@androidnoobdev: 非常感谢它现在正在工作:)
-
@androidnoobdev:我看到的唯一一个问题是我无法使用地图。我的意思是我无法缩放或移动相机。
-
不,你可以。地图准备好后,您可以通过缩放和所有相机对象。见文档
-
@androidnoobdev: 对不起,我对地图无能为力。
标签: android google-maps android-mapview