import android.location.LocationManager;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
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.MapsInitializer;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
public class MapFragment extends Fragment implements OnMapReadyCallback {
private LocationManager locationManager;
GoogleMap mGoogleMap;
MapView mMapView;
View mView;
public MapFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mView = inflater.inflate(R.layout.fragment_map, container, false);
return mView;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mMapView = mView.findViewById(R.id.map);
if (mMapView != null) {
mMapView.onCreate(null);
mMapView.onResume();
mMapView.getMapAsync(this);
}
}
@Override
public void onMapReady(GoogleMap googleMap) {
MapsInitializer.initialize(getContext());
mGoogleMap = googleMap;
googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
googleMap.addMarker(new MarkerOptions().position(new LatLng(39.918837, -82.831853)).title("Bowzers").snippet("Where Our Dogs Are NOT JUST A DOG"));
CameraPosition Bowzers = CameraPosition.builder().target(new LatLng(39.918837, -82.831853)).zoom(16).bearing(0).tilt(45).build();
googleMap.moveCamera(CameraUpdateFactory.newCameraPosition(Bowzers));
}
}
Таким образом, приведенный выше код - это то, что в настоящее время работает для этапа 1 моего проекта. Он отображает карту и ставит маркер на единственное обозначение, которое будет отмечено. Теперь это внутри фрагмента. Следующий фрагмент кода, если я использую его в отдельном проекте, работает просто замечательно, но не уверен, как переместить его во фрагмент. Однако моя общая цель - показать, где человек находится на карте, и обновлять его по мере движения, сохраняя при этом метку для единственного пункта назначения на карте. Мне не нужны директоны или полилинии, просто маркер, который обновляется по мере перемещения пользовательского устройства.
Ниже приведен код, который работает автономно только для определения местоположения GPS.
import android.content.Context;
import android.content.pm.PackageManager;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
import android.widget.Toast;
public class CurrentLocationActivity extends AppCompatActivity implements LocationListener {
public static String tvLongi;
public static String tvLati;
TextView tvLatitude;
TextView tvLongitude;
LocationManager locationManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CheckPermission();
}
/* Request updates at startup */
@Override
public void onResume() {
super.onResume();
getLocation();
}
/* Remove the locationlistener updates when Activity is paused */
@Override
protected void onPause() {
super.onPause();
locationManager.removeUpdates(this);
}
public void getLocation() {
try {
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 5000, 5, this);
} catch (SecurityException e) {
e.printStackTrace();
}
}
public void CheckPermission() {
if (ContextCompat.checkSelfPermission(getApplicationContext(), android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getApplicationContext(), android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_COARSE_LOCATION}, 101);
}
}
@Override
public void onLocationChanged(Location location) {
// Getting reference to TextView tv_longitude
tvLongitude = (TextView) findViewById(R.id.tv_longitude);
// Getting reference to TextView tv_latitude
tvLatitude = (TextView) findViewById(R.id.tv_latitude);
tvLongi = String.valueOf(location.getLongitude());
tvLati = String.valueOf(location.getLatitude());
// Setting Current Longitude
tvLongitude.setText("Longitude:" + tvLongi);
// Setting Current Latitude
tvLatitude.setText("Latitude:" + tvLati);
}
@Override
public void onProviderDisabled(String provider) {
Toast.makeText(CurrentLocationActivity.this, "Please Enable GPS and Internet", Toast.LENGTH_SHORT).show();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
Toast.makeText(this, "Enabled new provider!" + provider,
Toast.LENGTH_SHORT).show();
}
}
Любая помощь будет благодарна. Спасибо