我们的想法是创建一个ArrayList
个位置,每次我在该列表中保存位置数据的同时我在每两个点之间绘制一条折线。
我的问题是Google地图方法onLocationChanged()
。我想知道它是否被自动调用,我的意思是每次位置改变,或者当用户点击获取当前位置的按钮时调用它?
如果有人有更好的主意,请告诉我?
答案 0 :(得分:2)
基本上每次更改位置时都会调用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类 请查看以下link
答案 1 :(得分:0)
由于您没有提供代码,我不知道您有一个单独的课程来获取位置或同一活动/班级。
我假设您要在Arraylist
中插入更新后的位置,并希望创建所有这些点的折线连接。
如果我是对的,那么你可以做什么。
在您的活动中创建一个Arraylist
全局变量
ArrayList<LatLng> cordList = new ArrayList<>();
在onLocationChanged()
locationMarkers(location);
//passing updated location to the function/method.
(如果您有一个单独的类来获取位置,那么请在其中获取您的活动的参考,并使用该参考调用此方法。)
然后在您的活动中创建此方法。
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
。