Я создал приложение, в котором я пытаюсь нарисовать многоугольник на текущем месте на карте Google. но, потому что не выдает никакой ошибки, я не понимаю, почему, но я не могу нарисовать полигон. Мне действительно нужна помощь, если кто-нибудь знает, что не так с моим кодом, тогда, пожалуйста, помогите мне: (
Вот моя активность на карте, где я пишу код для рисования полигона:
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mMap;
Location currentLocation;
private GoogleMap googleMap;
private Polygon polygon;
private ArrayList<LatLng> arrayPoints = null;
FusedLocationProviderClient fusedLocationProviderClient;
private static final int REQUEST_CODE = 101;
private boolean checkClick = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);
fetchLastLocation();
}
private void fetchLastLocation() {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION},REQUEST_CODE);
return;
}
Task<Location> task = fusedLocationProviderClient.getLastLocation();
task.addOnSuccessListener(new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
if (location != null){
currentLocation = location;
Toast.makeText(getApplicationContext(),currentLocation.getLatitude() +""+ currentLocation.getLongitude(),Toast.LENGTH_LONG).show();
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(MapsActivity.this);
}
}
});
}
public GoogleMap getmMap() {
return mMap;
}
@Override
public void onMapReady(final GoogleMap googleMap) {
final List<LatLng> latLngList = new ArrayList<>(); // list of polygons
final List<Marker> markerList = new ArrayList<>();
mMap = googleMap;
LatLng latLng = new LatLng(currentLocation.getLatitude(), currentLocation.getLongitude());
MarkerOptions markerOptions = new MarkerOptions().position(latLng).title(latLng.latitude + ":" + latLng.longitude);
googleMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));
googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 10));
googleMap.addMarker(markerOptions);
Marker marker =googleMap.addMarker(markerOptions);
markerList.add(marker);
latLngList.add(latLng);
mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
@Override
public void onMapClick(final LatLng latLng) {
if (polygon != null) {
polygon.remove();
}
PolygonOptions polygonOptions = new PolygonOptions();
polygonOptions.fillColor(Color.CYAN);
polygonOptions.strokeColor(Color.BLUE);
polygonOptions.strokeWidth(5);
polygonOptions.addAll(latLngList);
polygon = mMap.addPolygon(polygonOptions);
}
});
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode){
case REQUEST_CODE:
if (grantResults.length> 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
fetchLastLocation();
}
}
}
}