如何在Android片段中使用谷歌地图?

时间:2016-02-01 12:22:10

标签: android google-maps android-fragments

我正在开发一个使用片段的应用。我的一个片段我想使用谷歌地图,但我收到错误。

    public class Map extends Fragment {
        public Map() {
            // Required empty public constructor
        }

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

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            // Inflate the layout for this fragment


            GoogleMap map = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
//Error:(38, 84) error: inconvertible types
//required: SupportMapFragment
//found:    Fragment
return inflater.inflate(R.layout.fragment_map, container, false);

        }
    }

当我试图投射地图片段时,我在评论中收到错误。我该怎么做才能解决这个问题?谢谢大家。 编辑:布局;

<fragment
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.SupportMapFragment" />

3 个答案:

答案 0 :(得分:0)

你可以通过这种方法。
这是我的片段类var options = { animation: { onComplete: function() { var ctx = this.chart.ctx; ctx.textAlign = "center"; ctx.textBaseline = "bottom"; this.chart.config.data.datasets.forEach(function(dataset) { ctx.fillStyle = dataset.strokeColor; dataset.metaDataset._points.forEach(function(p) { ctx.fillText(p._chart.config.data.datasets[p._datasetIndex].data[p._index], p._model.x, p._model.y - 10); }); }) } }};

MapView


下面是片段的

public class DashBoardFragment extends Fragment{
    //-------------- class variables
    private MapView mMapView;
    private GoogleMap mGoogleMap;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view= inflater.inflate(R.layout.fragment_dash_board, container, false);
      mMapView = (MapView) view.findViewById(R.id.map_dashBoard);
        mMapView.onCreate(savedInstanceState);
        mMapView.onResume();

        try {
            MapsInitializer.initialize(getActivity().getApplicationContext());
        } catch (Exception e) {
            e.printStackTrace();
        }
        mGoogleMap = mMapView.getMap();     
}

}


清单应具有以下权限以及

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.dev.abc">

    <com.google.android.gms.maps.MapView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/map_dashBoard"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
</LinearLayout>

答案 1 :(得分:0)

您将在return语句后转换为mapFragment。由于该程序认为该方法在此时已完成,因此它永远不会达到它。试试这个:

Inflater v = inflater.inflate(R.layout.fragment_map, container, false);
GoogleMap map = ((SupportMapFragment)v.getFragmentManager().findFragmentById(R.id.map)).getMap();
return v;

此外,我没有看到你使用意图启动谷歌地图活动。

答案 2 :(得分:0)

Google for Maps的最新更新,只有片段支持MapView。

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

For more Info clink here