我正在尝试在片段中使用谷歌地图,但我遇到了一个我不明白的问题。
我没有到达这一行加载地图:
gMap = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
此行似乎总是返回null ...
我尝试使用SupportMapFragment的MapFragment,但这是不可能的。
如何解决?
为了解释为什么我想在一个片段中显示它,这是因为我使用的是导航器,我的一个项目需要显示地图。
THX,
编辑:我的xml:
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.google.android.gms.maps.MapFragment"/>
答案 0 :(得分:1)
我认为您应该使用getsupportFragmentManager
而不是getFragmentManager
,否则它将始终返回null
答案 1 :(得分:1)
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.google.android.gms.maps.SupportMapFragment"/>
public class MainActivity extends ActionBarActivity implements OnMapReadyCallback{
private SupportMapFragment map;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
map = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
map.getMapAsync(this);//remember getMap() is deprecated!
}
@Override
public void onMapReady(GoogleMap map) {
map.moveCamera(CameraUpdateFactory.newLatLngZoom(
new LatLng(47.17, 27.5699), 16));
map.addMarker(new MarkerOptions() .icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher)).anchor(0.0f, 1.0f) // Anchors the marker on the bottom left
.position(new LatLng(47.17, 27.5699))); //Iasi, Romania
map.setMyLocationEnabled(true);
}
}
并更改布局中的引用:
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment" />
答案 2 :(得分:0)
我不认为谷歌地图包含&lt;片断&gt;标签。请参阅here原因:
注意:当布局包含a时,您无法将布局扩展为片段。只有动态添加到片段时才支持嵌套片段。
然而,SO中的一些人设法在一个片段中显示地图,但解决方案很糟糕。