【问题标题】:Adding google maps in navigation drawer : Error in output (Maps not being displayed)在导航抽屉中添加谷歌地图:输出错误(地图未显示)
【发布时间】:2015-12-21 04:46:30
【问题描述】:

我已经在 android studio 的导航抽屉布局中成功集成了谷歌地图。但是当我以某种方式调用活动时,只会显示标记。但地图部分是空白的。我想放大当前位置,但也没有发生。

问题为什么地图不能正确显示

我的代码

import android.app.Fragment;
import android.os.Bundle;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapView;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptor;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import android.support.v4.app.FragmentActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

/**
 * Created by Administrator on 18-12-2015.
 */
public class MapsActivity extends Fragment {
    private GoogleMap mMap;
    MapView mapView;


    public MapsActivity() {
    }


    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.activity_maps, container, false);

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

        mapView.onCreate(savedInstanceState);

        if(mapView!=null)
        {
            mMap = mapView.getMap();

            mMap.getUiSettings().setMyLocationButtonEnabled(false);

            mMap.setMyLocationEnabled(true);

            mMap.getUiSettings().setZoomControlsEnabled(true);

            LatLng Redfort = new LatLng(28.656061, 77.237847);
            mMap.addMarker(new MarkerOptions().position(Redfort).title("Red Fort- Starting Point 1").snippet("Welcome"));
            mMap.moveCamera(CameraUpdateFactory.newLatLng(Redfort));


            mMap.addMarker(new MarkerOptions()
                    .position(new LatLng(29.656061, 77.237847))
                    .title("Delhi")
                    .snippet("Population: 776733"));
        }

        return rootView;
    }

输出:

【问题讨论】:

  • 您是否在 manifest.xml 中添加了 google api 密钥
  • 我在下面添加代码检查一次。

标签: android google-maps navigation navigation-drawer


【解决方案1】:

首先你应该实现OnMapReadyCallback, 您应该在地图准备好时设置标记并使用 moveCamera 方法,即在 OnMapReadyCallback 的方法 onMapReady(GoogleMap googleMap) 中, 参考:https://developers.google.com/android/reference/com/google/android/gms/maps/OnMapReadyCallback

第二:你一定是在logcat视图中得到了一些错误日志,我认为当Google Map API拒绝权限时可能会出现上述问题,如果你可以请发布与地图相关的整个错误日志。

确保您遵循官方入门指南: https://developers.google.com/maps/documentation/android-api/start

对于你的情况,我认为使用MapFragment,它的getMapAsync (OnMapReadyCallback callback) 方法可以完成这项工作。

【讨论】:

    【解决方案2】:

    检查以下代码

    public class MapView extends AppCompatActivity{
    GoogleMap mMap;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_map_view);
    MapFragment mapFragment = (MapFragment)getFragmentManager().findFragmentById(R.id.map);
        mMap = mapFragment.getMap();
    mMap.addMarker(new MarkerOptions()
                    .position(new LatLng(29.656061, 77.237847))
                    .title("Delhi")
                    .snippet("Population: 776733"));
        }
    }
    

    activity_map_view.xml

    <android.support.v4.widget.DrawerLayout  xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/drawer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:fitsSystemWindows="true">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <include
            android:id="@+id/toolbar"
            layout="@layout/tool_bar">
        </include>
    
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginTop="56dp"
            android:layout_marginBottom="50dp"
            android:orientation="vertical"
            android:id="@+id/abovetab">
            <fragment xmlns:android="http://schemas.android.com/apk/res/android"
                android:id="@+id/map"
                android:name="com.google.android.gms.maps.MapFragment"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />
    </RelativeLayout>
    </RelativeLayout>
    <android.support.design.widget.NavigationView
        android:id="@+id/navigation_view_left"
        android:layout_height="match_parent"
        android:layout_width="wrap_content"
        android:layout_marginBottom="50dp"
        android:layout_gravity="start"
        app:menu="@menu/drawer"/>
     </android.support.v4.widget.DrawerLayout>
    

    抽屉.xml

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
    <group android:checkableBehavior="single">
        <item
            android:id="@+id/filter"
            android:checked="false"
            android:icon="your drawable folder image" 
            android:title="Filter" />
    
        <item
            android:id="@+id/modify"
            android:checked="false"
            android:icon="your drawable folder image"
            android:title="Modify" />
    
    </group>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多