MapFragment中的当前位置

时间:2018-09-29 19:21:24

标签: java android android-studio

您好,您能帮我如何获得Google地图片段中的当前位置吗?

我在应用程序中使用NavigationDrawer,并且将地图显示为Fragment。

但是我找不到显示用户当前位置的解决方案。

这是我片段的代码:我只包含了几种方法。

public class MapFragment extends Fragment implements OnMapReadyCallback {



@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (getArguments() != null) {
        mParam1 = getArguments().getString(ARG_PARAM1);
        mParam2 = getArguments().getString(ARG_PARAM2);
    }
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
  View v =  inflater.inflate(R.layout.fragment_map, container, false);
    SupportMapFragment mapFragment = (SupportMapFragment)getChildFragmentManager().findFragmentById(R.id.map1);
    mapFragment.getMapAsync(this);
  return v;
}

// TODO: Rename method, update argument and hook method into UI event
public void onButtonPressed(Uri uri) {
    if (mListener != null) {
        mListener.onFragmentInteraction(uri);
    }
}





@Override
public void onMapReady(GoogleMap googleMap) {

    map = googleMap;

}

我能够将当前位置设置为普通MapView,但不能分段。

1 个答案:

答案 0 :(得分:0)

首先,您必须提交申请This Permission

然后,您需要获取设备的当前位置:

LocationManager lm = (LocationManager)getActivity().getSystemService(Context.LOCATION_SERVICE);
Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
double longitude = location.getLongitude();
double latitude = location.getLatitude();

现在您有了坐标(经度,纬度),然后实例化LatLng对象:

LatLng yourLocation = new LatLng(latitude, longitude);

现在将相机移动到您当前的位置:

map.moveCamera(CameraUpdateFactory.newLatLngZoom(yourLocation, 13));

第一个参数是目的地,而13是缩放级别

有什么问题吗?