我知道这个问题已经被问过几次了,但我无法通过查看它们找到解决我的问题的方法。我创建了一个抽屉导航。抽屉导航自然有助于切换 fragment 。在这样一个 fragment 中,我想显示一张谷歌地图。
map_fragment.xml:
<fragment
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.MapFragment" />
MapFragment:
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
public class MapFragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View view = inflater.inflate(R.layout.map_fragment, container, false);
GoogleMap map = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
return view;
}
}
行:
GoogleMap map = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
始终显示:
无法从 Fragment 转换到 SupportMapFragment
我不知道为什么会出现这个?我哪里错了?我已在 list 中提供了所有必需的权限,因为我可以在其他 Activity 中查看谷歌地图。
最佳答案
这是使用谷歌地图的最佳实践,尝试一下。
public class MapFragment extends Fragment implements OnMapReadyCallback{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View view = inflater.inflate(R.layout.map_fragment, container, false);
// GoogleMap map = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
MapFragment map = (MapFragment) getFragmentManager().findFragmentById(R.id.map);
map.getMapAsync(this);
return view;
}
@Override
public void onMapReady(GoogleMap googleMap) {
//googleMap is your map
googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
gm = googleMap;
googleMap.setOnMarkerClickListener(this);
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(Ancona, 5));
}
}
关于java - 无法在 fragment 内使用谷歌地图V2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29006458/