Android Google地图(SupportMapFragment)未在视图寻呼机片段中显示标记

Android Google地图(SupportMapFragment)未在视图寻呼机片段中显示标记,android,google-maps,android-fragments,Android,Google Maps,Android Fragments,您好,我已经为google地图实施了SupportMapFragment,并尝试在google地图上设置我的位置按钮和标记(SupportMapFragment),但它没有显示,但此代码正在活动中工作 请查找以下代码以了解更多信息 public class MapsFragment extends Fragment implements OnMapReadyCallback { private static View view; private SupportMapFragmen

您好,我已经为google地图实施了
SupportMapFragment
,并尝试在google地图上设置我的位置按钮和标记(
SupportMapFragment
),但它没有显示,但此代码正在活动中工作

请查找以下代码以了解更多信息

public class MapsFragment extends Fragment implements OnMapReadyCallback {
    private static View view;
    private SupportMapFragment mMap;
    private static Double latitude, longitude;
    GoogleMap gMap;
    private static final int PERMISSION_REQUEST_CODE = 1;

    public MapsFragment() {
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.fragment_map, container, false);
        latitude = 26.78;
        longitude = 72.56;
        FragmentManager fm = getChildFragmentManager();
        mMap = (SupportMapFragment) fm.findFragmentById(R.id.map);
        if (mMap == null) {
            mMap = SupportMapFragment.newInstance();
            fm.beginTransaction().replace(R.id.map, mMap).commit();
            mMap.getMapAsync(this);
        }
        return view;
    }

    @Override
    public void onMapReady(GoogleMap map) {
        gMap = map;

        gMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new
                LatLng(49.39, -124.83), 20));
        gMap.addMarker(new MarkerOptions()
                .position(new LatLng(37.7750, 122.4183))
                .title("San Francisco")
                .snippet("Population: 776733"));
        gMap.getUiSettings().setZoomGesturesEnabled(true);
        if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION)
                == PackageManager.PERMISSION_GRANTED) {
            gMap.setMyLocationEnabled(true);
        } else {
            requestPermission();
        }

    }
}
试试这个

 public void drawMarker(double lat,double lon)
{
    if (mMap != null) {
        MarkerOptions marker = new MarkerOptions().position(new LatLng(lat, lon)).title(" Maps Tutorial").snippet("Android Ruler");
        marker.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
// Moving Camera to a Location with animation
        CameraPosition cameraPosition = new CameraPosition.Builder().target(new LatLng(latitude, longitude)).zoom(12).build();
        mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
        mMap.addMarker(marker);
    }
}

请参阅此处了解详细信息:-

使用
setMyLocation()时,可能您还没有权限。试试这个-

if (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION)
            == PackageManager.PERMISSION_DENIED){
        FragmentCompat.requestPermissions(this,
                new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
                PERMISSION_REQUEST);
}
处理结果:

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if (requestCode == PERMISSION_REQUEST && grantResults.length > 0) {
        if (permissions[0].equals(Manifest.permission.ACCESS_FINE_LOCATION)) {
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED){
                //Calling the function here
                gMap.setMyLocationEnabled(true);
            }
            else
                Toast.makeText(context, "You need to provide " +
                        "permission to find the location", Toast.LENGTH_LONG).show();
        }
    }
}

我在viewpager上也遇到了同样的问题,我使用onmappled回调解决了这个问题。试着这样做

public class MapsFragment extends Fragment implements OnMapReadyCallback, 
                                             GoogleMap.OnMapLoadedCallback {

       @Override
       public void onMapReady(GoogleMap map) {
            gMap = map;
            gMap.setOnMapLoadedCallback(this);
       }

       //map loaded callback
       @Override
       public void onMapLoaded() {
           // add your marker now
           gMap.addMarker(new MarkerOptions()
                .position(new LatLng(37.7750, 122.4183))
                .title("San Francisco")
                .snippet("Population: 776733"));
       }
}

从中替换代码

 if **(mMap != null)** {
            mMap = SupportMapFragment.newInstance();
            fm.beginTransaction().replace(R.id.map, mMap).commit();
            mMap.getMapAsync(this);
        }
其中fragment是viewPagerFragment的实例

在xml中

<LinearLayout
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="250dp" />


将此作为片段活动,而不是片段。是的地图显示Bajirao Shindei am在viewpaser和appCompactActivity jay droider中工作
<LinearLayout
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="250dp" />