Java 如何使用谷歌地图实时保存跟踪

Java 如何使用谷歌地图实时保存跟踪,java,android,Java,Android,其思想是创建一个位置的ArrayList,每次我在该列表中保存位置数据的同时,我在每个点之间绘制一条多段线 我的问题是关于谷歌地图方法onLocationChanged()。我想知道它是否是自动调用的,我的意思是每次位置更改时,还是在用户单击“获取当前位置”按钮时调用 如果有人有更好的主意,请告诉我 基本上,每次更改位置时都会调用onLocationChanged。 然而,在其中实现代码是个坏主意,您可以这样做 public class GPSTracker implements Locati

其思想是创建一个位置的
ArrayList
,每次我在该列表中保存位置数据的同时,我在每个点之间绘制一条多段线

我的问题是关于谷歌地图方法
onLocationChanged()
。我想知道它是否是自动调用的,我的意思是每次位置更改时,还是在用户单击“获取当前位置”按钮时调用


如果有人有更好的主意,请告诉我

基本上,每次更改位置时都会调用onLocationChanged。 然而,在其中实现代码是个坏主意,您可以这样做

public class GPSTracker  implements LocationListener{
private Location location ;
public Location getLocation(){
return this.location;
}
// .. code

 @Override
    public void onLocationChanged(Location location) {
    this.location=location;
    }

}
现在,在您的主要活动中,您可以通过创建GPSTracker对象来获取位置 那么像这样

GPSTracker=new GPSTracker(this);
gpsTracker.getLocation (); //this will provide you with longitude,latitude then you can control it with a thread or something like that, by calling getLongitude,getLatitude you can get the location paramter
请注意,构造函数将上下文作为参数,因此将活动的上下文传递给GPSTracker类
请检查以下内容

因为您没有提供代码,我不知道您是否有单独的课程获取位置或在同一活动/课程中

我假设您希望在
Arraylist
中插入更新的位置,并希望创建一个多段线连接所有这些点<如果我是对的,下面是你能做的

  • 在活动中创建一个
    Arraylist
    全局变量

    ArrayList<LatLng> cordList = new ArrayList<>();
    
    (如果您有一个单独的类来获取位置,那么在其中获取活动的引用,并使用该引用调用此方法。)

  • 然后在活动中创建此方法

    public void locationMarkers(Location location){
    cordList.add(new LatLng(location.getLatitude(), location.getLongitude()));
    Polyline line =googleMap.addPolyline(newPolylineOptions().width(6).color(Color.GREEN));
    line.setPoints(cordList);
    }
    

这样,您将在位置地图上有一条多段线
该多段线也是两个标记/位置之间的直线
如果您想让它在路上使用,请使用
HashMap

有许多相同的教程。你至少应该试过其中一些。可能是我知道如何获取当前位置的副本。这不是副本,谢谢
public void locationMarkers(Location location){
cordList.add(new LatLng(location.getLatitude(), location.getLongitude()));
Polyline line =googleMap.addPolyline(newPolylineOptions().width(6).color(Color.GREEN));
line.setPoints(cordList);
}