如何在导航抽屉活动中添加Google Map



问题,此代码也不起作用。

public class MainActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener

mapView = (MapView)findViewById(R.id.map);

    mapView.onCreate(savedInstanceState);
    mapView.getMapAsync(new OnMapReadyCallback() {
        @Override
        public void onMapReady(GoogleMap googleMap) {
            googleMap.addMarker(new MarkerOptions()
                    .position(new LatLng(37.7750, 122.4183))
                    .title("San Francisco")
                    .snippet("Population: 776733"));
        }
    });

我今天找到了一个解决方案。

  1. OnMapReadyCallback实施到MainActivity

    public class MainActivity extends AppCompatActivity implements  
         NavigationView.OnNavigationItemSelectedListener, 
         OnMapReadyCallback
    {
        // ...
    }
    
  2. 实施onMapReady()。保持空。

    @Override
    public void onMapReady(GoogleMap googleMap)
    {
    }
    
  3. onCreate()方法中:

    SupportMapFragment supportMapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
    supportMapFragment.getMapAsync(this);
    

您正在混合两个过程。您必须在XML或活动类代码中更改:

1)用mapView替换content_main.xml中的地图片段(如下):

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

2)或更换以下:

mapView = (MapView)findViewById(R.id.map);
mapView.onCreate(savedInstanceState);
mapView.getMapAsync(new OnMapReadyCallback() {
    @Override
    public void onMapReady(GoogleMap googleMap) {
        googleMap.addMarker(new MarkerOptions()
                .position(new LatLng(37.7750, 122.4183))
                .title("San Francisco")
                .snippet("Population: 776733"));
    }
});

with:

 ((SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map)).getMapAsync(new OnMapReadyCallback() {
  @Override
  public void onMapReady(GoogleMap googleMap) {
       googleMap.addMarker(new MarkerOptions()
           .position(new LatLng(37.7750, 122.4183))
           .title("San Francisco")
           .snippet("Population: 776733"));
   }
}

在您的主动级中。

在您现有的代码中,您已在布局中添加了地图片段,但请求来自活动的MapView。这就是为什么它不起作用。

要获取API键,请转到此处,生成键。

复制钥匙并将其粘贴在应用标签下的清单中:

<meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="YOUR_API_KEY"/>

现在将显示Google地图。

first you have to create the relative_layout because we can't add anything in map fragment so we add image button and map fragment in relative_layout.


 <?xml version="1.0" encoding="utf-8"?>
    <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        tools:openDrawer="start">
        <include
            layout="@layout/activity_maps"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
        <android.support.design.widget.NavigationView
            android:id="@+id/nav_view"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:fitsSystemWindows="true"
            app:headerLayout="@layout/nav_header_main"
            app:menu="@menu/activity_main_drawer_drawer" />
    </android.support.v4.widget.DrawerLayout>
here your drawer_layout
`<?xml version="1.0" encoding="utf-8"?>
    <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        tools:openDrawer="start">
        <include
            layout="@layout/activity_maps"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
        <android.support.design.widget.NavigationView
            android:id="@+id/nav_view"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:fitsSystemWindows="true"
            app:headerLayout="@layout/nav_header_main"
            app:menu="@menu/activity_main_drawer_drawer" />
    </android.support.v4.widget.DrawerLayout>`

在MapActivity中添加实施方法NavigationView,然后在getUpportedFragment

下方添加此代码
` DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
           NavigationView  navigationView = (NavigationView) findViewById(R.id.nav_view);`

然后在ImageButton方法上编写OnClick方法,即公共void

drawerclick(View view) {

            drawer.openDrawer(Gravity.START);
    enter code here
            navigationView.setNavigationItemSelectedListener(this);
        }`

相关内容

  • 没有找到相关文章