让Google MapView V2正常运行

时间:2014-07-27 22:21:44

标签: android google-maps android-mapview android-maps-v2

是否有人能够使用Google MapView V2?我浏览了StackOverflow(包括这个问题:Android MapView getMap() returns null),每个人似乎都无法使用MapView并最终不得不使用Fragment。

拥有以下google_map_view.xml:

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

我尝试以这种方式实例化地图:

LayoutInflater layoutInflater = (LayoutInflater) getSystemService( Context.LAYOUT_INFLATER_SERVICE );           
googleMapView = (View) layoutInflater.inflate(R.layout.google_map_view, null);
MapView mapView = (MapView)googleMapView.findViewById(R.id.map_view);
GoogleMap googleMap = mapView.getMap();

googleMap将为null。

Google Play服务与该应用正确关联,我在AndroidManifest.xml文件中拥有正确的密钥。

思考?

2 个答案:

答案 0 :(得分:0)

我上周刚开始学习谷歌地图API V2,由此完成了地图:

在我的活动布局中,我想要地图出现,我刚才写道:

    <fragment
        android:id="@+id/PickDestMap"
        android:name="com.google.android.gms.maps.MapFragment"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        class="com.google.android.gms.maps.SupportMapFragment" />

可以放在LinearLayout或任何其他布局中。

在Activity Java文件中:

然后在onCreate:

//Get fragment from activity (which was created in above layout file)
SupportMapFragment smf = (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.PickDestMap);

GoogleMap wMap = smf.getMap();

现在使用wMap,您可以根据需要配置,编辑,修改地图。 假设您的密钥设置正确,正确导入服务,它应该可以立即使用。

出于测试目的,我刚删除了Activity.java中的所有代码,它运行正常。

答案 1 :(得分:0)

Google现在使用以下方法更方便地获取地图

myMapFragment.getMapAsync(new OnMapReadyCallback) {
     @Override
     public void onMapReady(GoogleMap googleMap) {
         myMap = googleMap;
     }
});