полилиния не отображается на картах Google

Я пытаюсь добавить полилинию, соединяющую группу точек на картах Google. Когда я создаю приложение, я не получаю никаких ошибок, но полилиния не появляется. Если я вызываю метод isvisible(), он возвращает true. Пожалуйста, помогите

@Override
public void onMapReady(GoogleMap googleMap) {
   // new LongOperation().execute("");

   /* googleMap.setMapStyle(
            MapStyleOptions.loadRawResourceStyle(
                    this, R.raw.mapjson));*/

    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        // TODO: Consider calling
        //    ActivityCompat#requestPermissions
        // here to request the missing permissions, and then overriding
        //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
        //                                          int[] grantResults)
        // to handle the case where the user grants the permission. See the documentation
        // for ActivityCompat#requestPermissions for more details.
        return;
    }
    googleMap.setMyLocationEnabled(true);
    googleMapnew = googleMap;
    Polyline polyline1 = googleMap.addPolyline(new PolylineOptions()
            .clickable(true)
            .add(
                    new LatLng(13.034063, 77.567006 ),
                    new LatLng(13.034087, 77.568629),
                    new LatLng(13.034202, 77.569431),
                    new LatLng(13.034371, 77.570103),
                    new LatLng(13.034535, 77.570121),
                    new LatLng(13.036526, 77.570489),
                    new LatLng(13.037719, 77.570545),
                    new LatLng(13.038252, 77.570039),
                    new LatLng(13.039849, 77.570028),
                    new LatLng(13.040153, 77.569229),
                    new LatLng(13.040640, 77.568512),
                    new LatLng(13.041071, 77.567996),
                    new LatLng(13.041780, 77.567894))
    .color(Color.GREEN)
    .width(66));
    Log.e("polylog", String.valueOf(polyline1.isVisible()));
    Log.e("polylog", String.valueOf(polyline1));

}

person shivadeep    schedule 02.10.2017    source источник


Ответы (1)


Проблема в

googleMap.setMyLocationEnabled(true);

строку, потому что вы, вероятно, не предоставили ACCESS_FINE_LOCATION и ACCESS_COARSE_LOCATION своему приложению. Вы должны предоставить его своему приложению вручную через Applications меню вашего Android-устройства или реализовать проверку и предоставление разрешений, как в Официальная документация и, например, этот ответ Дэниел Ньюджент, что-то вроде этого:

public class MainActivity extends AppCompatActivity implements OnMapReadyCallback {

    private static final int LOCATION_PERMISSION_REQUEST_CODE = 101;
    private GoogleMap mGoogleMap;
    private MapFragment mMapFragment;

    private void makeLocationPermissionRequest() {
        ActivityCompat.requestPermissions(this,
                new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}, LOCATION_PERMISSION_REQUEST_CODE);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mMapFragment = (MapFragment) getFragmentManager()
                .findFragmentById(R.id.map_fragment);
        mMapFragment.getMapAsync(this);
    }

    private void showPolyline() {

        mGoogleMap.setMyLocationEnabled(true);

        Polyline polyline1 = mGoogleMap.addPolyline(new PolylineOptions()
                .clickable(true)
                .add(
                        new LatLng(13.034063, 77.567006 ),
                        new LatLng(13.034087, 77.568629),
                        new LatLng(13.034202, 77.569431),
                        new LatLng(13.034371, 77.570103),
                        new LatLng(13.034535, 77.570121),
                        new LatLng(13.036526, 77.570489),
                        new LatLng(13.037719, 77.570545),
                        new LatLng(13.038252, 77.570039),
                        new LatLng(13.039849, 77.570028),
                        new LatLng(13.040153, 77.569229),
                        new LatLng(13.040640, 77.568512),
                        new LatLng(13.041071, 77.567996),
                        new LatLng(13.041780, 77.567894))
                .color(Color.GREEN)
                .width(66));

        mGoogleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(13.034063, 77.567006), 12));
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        mGoogleMap = googleMap;

        if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            int locationPermission = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION);
            if (locationPermission != PackageManager.PERMISSION_GRANTED) {
                makeLocationPermissionRequest();
            } else {
                showPolyline();
            }
        } else {
            showPolyline();
        }
}

    @Override
    public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
        switch (requestCode) {
            case LOCATION_PERMISSION_REQUEST_CODE: {
                // If request is cancelled, the result arrays are empty.
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    showPolyline();
                } else {
                }
                return;
            }
        }
    }

}

И не забудьте добавить

to your AndroidManifest.xml file. And you got something like that:

введите здесь описание изображения

person Andrii Omelchenko    schedule 04.10.2017