好吧,我开发了一个安卓程序来获取你的位置。现在我想要的是准确地到达你所在的位置,跟踪你的动作,并在你的路径地图上画一条线。阅读了很多指南,但根本无法使其工作
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, LocationListener {
private GoogleMap mMap;
LocationManager locationManager;
String provider;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
provider = locationManager.getBestProvider(new Criteria(), false);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
Location location= locationManager.getLastKnownLocation(provider);
double lat =location.getLatitude();
double lng =location.getLongitude();
mMap.addMarker(new MarkerOptions().position(new LatLng(lat, lng)).title("Marker"));
// Add a marker and move the camera
}
@Override
public void onLocationChanged(Location location) {
Double lat = location.getLatitude();
Double lng = location.getLongitude();
mMap.addMarker(new MarkerOptions().position(new LatLng(lat, lng)).title("Marker"));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(lat, lng), 10));
Log.i("Latitude", lat.toString());
}
您编写的所有内容都是编写的,但是您在启动应用程序时onLocationChanged
没有工作。
-
如果有缓存,
getLastKnownLocation
返回 if 位置,否则返回 null 在那里添加检查。if(location!=null) { double lat =location.getLatitude(); double lng =location.getLongitude(); mMap.addMarker(new MarkerOptions().position(new LatLng(lat,lng)).title("Marker")); }
-
fusedlocation api
为了更好地管理位置,请参阅此处。 -
试试这个来
addMarker:
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); } }
请参考这里:http://coderzpassion.com/android-google-maps-v2-tutorial-with-markers/
-
onLocationChanged(Location location):
如果现有位置为空或当前位置精度大于现有精度,则存储当前位置。
所以,你需要修改位置更改(位置位置)并将要更改的应用程序状态值写入代码,如下所示:
@Override
public void onLocationChanged(Location location) {
double latitude = location.getLatitude();
double longitude = location.getLongitude();
myLatLng = new LatLng(latitude, longitude);
zoomToPoints();
if(!isDirectionDrawn) {
new LongOperation().execute("");
}https://developers.google.com/android/reference/com/google/android/gms/location/FusedLocationProviderApi
}
private void moveToCurrentLocation(LatLng currentLocation)
{
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(currentLocation, 15));
// Zoom in, animating the camera.
mMap.animateCamera(CameraUpdateFactory.zoomIn());
// Zoom out to zoom level 10, animating with a duration of 2 seconds.
mMap.an
}
希望对您有所帮助。