我有一个Android应用程序,可以获取我的设备位置并添加标记。它还跟踪位置和标记移动。我希望每次位置更改时在地图上添加一个标记,这样我就可以在以后在它们之间绘制一条折线。我没有使用firebase或DBHelper。只是寻找一种简单的方法来做到这一点。
这是onLocationChanged函数
@Override
public void onLocationChanged(Location location) {
LatLng myCoordinates = new LatLng(location.getLatitude(), location.getLongitude());
LocationMarker.setPosition(myCoordinates);
mMap.moveCamera(CameraUpdateFactory.newLatLng(myCoordinates));
float zoomLevel = 12.0f;
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(myCoordinates, zoomLevel));
}
这是我的onCreate功能
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tracking);
mOptions = new MarkerOptions().position(new LatLng(0, 0)).title("My Current Location")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE));
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
checkLocationPermission();
}
// Gets map fragment and allows map to display location
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(map);
mapFragment.getMapAsync(this);
}
是否可以将lat和long存储到数组中并使用数组绘制点?我一直试图解决它,但没有明确的
答案 0 :(得分:0)
您要找的是Polyline
,可以找到文档here。
Polyline
的构建器需要LatLng
个对象。我不确定您目前正在做什么,但您可以将LatLng
功能中的onLocationChanged
个对象存储在一个数组中,也可以将所有Markers
存储在数组中映射到数组并调用他们的getLocation
函数来获取LatLng
所需的Polyline
个对象。
答案 1 :(得分:0)
创建一个字段变量:
ArrayList<LatLng> points = new ArrayList<>();
在onLocationChanged中执行:
points.add(myCoordinates);
然后,当您想要创建PolyLine时,请执行以下操作:
Polyline line = map.addPolyline(new PolylineOptions()
.addAll(points)
.width(5)
.color(Color.RED));
addAll方法支持ArrayList实现的Iterable类型。