Привет, ребята, я сейчас пытаюсь сохранить местоположение по ширине и длине в списке массивов, и исходя из того, что нужно нарисовать полилинии, идея будет заключаться в том, что если пользователь переместится, он будет рисовать полилинию из прошлого значения в текущее значение.и так далее.
Вот мой код выше, я застрял прямо сейчас, чтобы иметь возможность сохранить местоположение в списке массивов, потому что, если я сохранил местоположение в первом значении, когда я вызываю массив list.get (I +1) я получаю ошибку IndexOutOFBounds.
Любая идея, как написать, что при каждом изменении местоположения location.latlng будет сохраняться в списке массивов, а затем значения списка массивов будут отображаться в полилинии.
Вот мойкод ниже:
Спасибо!
@Override
public void onLocationChanged(Location location){
double latitude = location.getLatitude();
double longitude = location.getLongitude();
//is called only once
lat.add(latitude);
lng.add(longitude);
//second coordinates
lat.add(latitude);
lng.add(longitude);
Geocoder geocoder = new Geocoder(getApplicationContext());
try {
List<Address> addresses =
geocoder.getFromLocation(latitude, longitude, 1);
String result = addresses.get(0).getLocality()+":";
result += addresses.get(0).getCountryName();
LatLng latLng = new LatLng(latitude, longitude);
if (marker != null){
marker.remove();
marker = mMap.addMarker(new MarkerOptions().position(latLng).title(result));
int i = 0;
Polyline polyline = mMap.addPolyline(new PolylineOptions()
.clickable(true)
.add
( new LatLng(lat.get(i), lng.get(i)),
new LatLng(lat.get(i + 1), lng.get(i + 1))
));
polyline.setEndCap(new RoundCap());
polyline.setWidth(POLYLINE_STROKE_WIDTH_PX);
polyline.setColor(COLOR_BLACK_ARGB);
polyline.setJointType(JointType.ROUND);
polyline.setColor(COLOR_BLACK_ARGB);
}
else
{
marker = mMap.addMarker(new MarkerOptions().position(latLng).title(result));
int i = 0;
Polyline polyline = mMap.addPolyline(new PolylineOptions()
.clickable(true)
.add
( new LatLng(lat.get(i),lng.get(i)),
new LatLng(lat.get(i+1),lng.get(i+1))
));
polyline.setEndCap(new RoundCap());
polyline.setWidth(POLYLINE_STROKE_WIDTH_PX);
polyline.setColor(COLOR_BLACK_ARGB);
polyline.setJointType(JointType.ROUND);
polyline.setColor(COLOR_BLACK_ARGB);
}
} catch (IOException e)
{
e.printStackTrace();
}
}