Google Maps Android SDK - addMarker (), кажется, не работает на некоторых типах устройств - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть функция, которая возвращает мне широту и долготу, которые используются для добавления маркера, и она отлично работает с некоторыми устройствами: Asus, Samsung, Motorola.

Но я заметил, чтона некоторых телефонах маркеры не отображаются, и приложение не дает сбоя или не отправляет сообщение об ошибке, это происходит с Xiaomi, Honor, OnePlus.

Я читал в Интернете, что иногда запрос разрешения позиции разрешает проблему, но япредпочитаю не использовать это.

@Override
public void onMapReady(GoogleMap googleMap) {
    googleMap.setMinZoomPreference(googleMap.getMinZoomLevel());

    UiSettings settings = googleMap.getUiSettings();
    settings.setTiltGesturesEnabled(false);

    tracking(googleMap);

    timer.schedule(new TimerTask() {
        @Override
        public void run() {
            tracking(googleMap);
        }
    }, 10*1000,10*1000);

}


private void tracking(@NonNull GoogleMap gMap){
    AndroidNetworking.get(Constant.POSITION_URL)
            .setPriority(Priority.MEDIUM)
            .build()
            .getAsJSONObject(new JSONObjectRequestListener() {
                @Override
                public void onResponse(JSONObject IssLocationResponse) {

                    try {


                        String success = IssLocationResponse.getString("message");

                        JSONObject ISSPosition = IssLocationResponse.getJSONObject("iss_position");

                        double latitude = Double.parseDouble(ISSPosition.getString("latitude"));
                        double longitude = Double.parseDouble(ISSPosition.getString("longitude"));

                        long timestamp = IssLocationResponse.getLong("timestamp");



                        gMap.addMarker(new MarkerOptions()
                                .position(new LatLng(latitude,longitude))
                                .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
                        );

                        //gMap.moveCamera(CameraUpdateFactory.newLatLng(new LatLng(latitude,longitude)));
                        //gMap.animateCamera(CameraUpdateFactory.zoomTo(10));


                    } catch (JSONException e) {
                        e.printStackTrace();
                        //TODO Handle error 
                    }
                }
                @Override
                public void onError(ANError error) {
                    //Handle error
                    Log.d("ERROR","err: "+error.getErrorDetail());
                }
            });
}

Кто-нибудь сталкивался с такой проблемой?

1 Ответ

0 голосов
/ 27 февраля 2019

Наконец-то!

Я обнаружил, что проблема возникла во время рукопожатия , потому что мой Constant.POSITION_URL получил сертификат SSL с истекшим сроком действия и эта ошибка была вызвана только с Android 8.0 и мойтестовое устройство имеет 7.0

. Для отладки заливки я настроил UnsafeOkHttpClient, который будет принимать все сертификаты, и в процессе эксплуатации я установлю новый сертификат SSL

EDIT

Гораздо лучшим решением вместо установки UnsafeClient является добавление этой строки

android:usesCleartextTraffic="true"

в манифест внутри тега <application>, например:

<application
        ...
        ...
        android:usesCleartextTraffic="true">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...