ANDROID - 如何在抽屉菜单中使用谷歌地图?
Posted
技术标签:
【中文标题】ANDROID - 如何在抽屉菜单中使用谷歌地图?【英文标题】:ANDROID - How to use google maps in drawer menu? 【发布时间】:2021-09-11 14:25:57 【问题描述】:我想这样做是为了在地图上显示一个点,但这可能并不容易,因为我正在使用带有片段的抽屉菜单,因此 java 文件被拆分。
在第 35 行我有错误 Cannot resolve method 'getSupportFragmentManager' in 'MapFragment'
在第 38 行我有另一个错误Method 'onMapReady(com.google.android.gms.maps.GoogleMap)' is never used
MapFragment.java
public class MapFragment extends Fragment
GoogleMap gMap;
@Nullable
@org.jetbrains.annotations.Nullable
@Override
public View onCreateView(@NonNull @NotNull LayoutInflater inflater, @Nullable @org.jetbrains.annotations.Nullable ViewGroup container, @Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState)
return inflater.inflate(R.layout.fragment_map, container, false);
@Override
public void onViewCreated(@NonNull View view, Bundle savedInstanceState)
super.onViewCreated(view, savedInstanceState);
SupportMapFragment supportMapFragment = (SupportMapFragment)
getSupportFragmentManager().findFragmentById(R.id.google_map);
supportMapFragment.getMapAsync((OnMapReadyCallback) this);
public void onMapReady(GoogleMap googleMap)
gMap = googleMap;
gMap.setOnMapClickListener(latLng ->
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(latLng);
markerOptions.title("Here");
gMap.clear();
gMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng,10));
gMap.addMarker(markerOptions);
);
fragment_map.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
tools:context=".MapActivity">
<fragment
android:id="@+id/google_map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_
android:layout_ />
</RelativeLayout>
【问题讨论】:
【参考方案1】:使用 getChildFragmentManager() 代替 getSupportFragmentManager()。
SupportMapFragment supportMapFragment = (SupportMapFragment)
getChildFragmentManager().findFragmentById(R.id.google_map);
"Method 'onMapReady(com.google.android.gms.maps.GoogleMap)' is never used" ,你得到这个错误是因为你实际上没有覆盖原来的onMapReady()函数。所以Android工作室会认为这个函数concreate 方法。所以从 OnMapReadyCallBack 实现您的片段。
public class MapFragment extends Fragment implements OnMapReadyCallback
supportMapFragment.getMapAsync(this);
【讨论】:
以上是关于ANDROID - 如何在抽屉菜单中使用谷歌地图?的主要内容,如果未能解决你的问题,请参考以下文章