如何获得片段类中的最后一个位置?

时间:2016-07-25 18:14:30

标签: android google-maps android-fragments

我想创建一个位置感知应用,我在youtube上关注了各种教程。 我偶然发现了这个https://jsfiddle.net/dktoxtne/1/,但似乎它适用于Activity类。找不到任何使用Fragment类的教程。

我想在创建片段视图时在当前位置显示标记。

这是我的代码:

import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.content.ContextCompat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;

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.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.tugboat.tugboat.R;

public class MapFragment extends Fragment implements OnMapReadyCallback {
private MapView mapView;
private GoogleMap googleMap;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment_map,container,false);
}


@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    mapView = (MapView) view.findViewById(R.id.map);
    mapView.onCreate(savedInstanceState);
    mapView.onResume();
    mapView.getMapAsync(this);//when you already implement OnMapReadyCallback in your fragment
}

public void onResume() {
    super.onResume();
    mapView.onResume();
}

@Override
public void onPause() {
    mapView.onPause();
    super.onPause();
}

@Override
public void onDestroy() {
    mapView.onDestroy();
    super.onDestroy();
}

@Override
public void onLowMemory() {
    super.onLowMemory();
    mapView.onLowMemory();
}

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    mapView.onSaveInstanceState(outState);
}

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

    if (ContextCompat.checkSelfPermission(getActivity(), android.Manifest.permission.ACCESS_FINE_LOCATION)
            == PackageManager.PERMISSION_GRANTED) {
        googleMap.setMyLocationEnabled(true);
        map.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker"));
    } else {
        Toast.makeText(getActivity(), "You have to accept to enjoy all app's services!", Toast.LENGTH_LONG).show();
        if (ContextCompat.checkSelfPermission(getActivity(), android.Manifest.permission.ACCESS_FINE_LOCATION)
                == PackageManager.PERMISSION_GRANTED) {
            googleMap.setMyLocationEnabled(true);
            map.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker"));
        }
    }
}
}

0 个答案:

没有答案