gpt4 book ai didi

java - 持续跟踪用户的位置并绘制他所到之处的路径

转载 作者:太空宇宙 更新时间:2023-11-04 12:50:33 25 4
gpt4 key购买 nike

我开发了一个 Android 程序来获取你的位置。现在我想要的是准确地到达您所在的位置并跟踪您的 Action 并在您的路径 map 上画一条线。阅读了很多指南,但根本无法使其工作

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

  1. getLastKnownLocation 如果存在缓存,则返回位置,否则返回 null,并在此处添加检查。

     if(location!=null) 
    {
    double lat =location.getLatitude();
    double lng =location.getLongitude();
    mMap.addMarker(new MarkerOptions().position(new
    LatLng(lat,lng)).title("Marker")); }
  2. fusedlocation api 为了更好地管理位置,请参阅此处。

  3. 试试这个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(位置位置):如果现有位置为空或当前位置精度高于现有精度,则存储当前位置。

  • 所以,需要修改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


    }

    希望有帮助。

    关于java - 持续跟踪用户的位置并绘制他所到之处的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35871305/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com