Как показать широту и долготу на карте из базы данных в приложении android - PullRequest
0 голосов
/ 15 апреля 2020

широта и долгота, объявленные в двойном
ошибка: java .lang.NullPointerException: попытка вызвать виртуальный метод 'double java .lang.Double.doubleValue ()' для ссылки на пустой объект
строка ошибки: LatLng докторы = новый LatLng (широта, долгота);

        contactList = new ArrayList<>();
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);

        new GetContacts().execute();
    }


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

        // Add a marker in Sydney and move the camera
        LatLng doctors = new LatLng(latitude, longitude);
        mMap.addMarker(new MarkerOptions().position(doctors).title(dName));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(doctors));
    }

выборка данных из базы данных
выборка данных правильно, проблем нет

    private class GetContacts extends AsyncTask<Void, Void, Void> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            Toast.makeText(MapsActivity.this,"Json Data is downloading",Toast.LENGTH_LONG).show();

        }

        @Override
        protected Void doInBackground(Void... arg0) {
            HttpHandler sh = new HttpHandler();
            // Making a request to url and getting response
            String url = "http://amitumi.com/public/api/doctor/all";
            String jsonStr = sh.makeServiceCall(url);

            Log.e(TAG, "Response from url: " + jsonStr);
            if (jsonStr != null) {
                try {
                    JSONObject jsonObj = new JSONObject(jsonStr);

                    // Getting JSON Array node
                    JSONArray contacts = jsonObj.getJSONArray("data");

                    // looping through All Contacts
                    for (int i = 0; i < contacts.length(); i++) {
                        JSONObject c = contacts.getJSONObject(i);
                        String lat = c.getString("lat");
                        String lon = c.getString("long");

                        latitude = Double.parseDouble(c.getString(lat));
                        longitude = Double.parseDouble(c.getString(lon));

                        dName = c.getString(name);

                        // tmp hash map for single contact
                        HashMap<String, String> contact = new HashMap<>();

                        // adding each child node to HashMap key => value

                        contact.put("lat", lat);
                        contact.put("long", lon);

                        // adding contact to contact list
                        contactList.add(contact);
                    }
                } catch (final JSONException e) {
                    Log.e(TAG, "Json parsing error: " + e.getMessage());
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Toast.makeText(getApplicationContext(),
                                    "Json parsing error: " + e.getMessage(),
                                    Toast.LENGTH_LONG).show();
                        }
                    });

                }

            } else {
                Log.e(TAG, "Couldn't get json from server.");
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(getApplicationContext(),
                                "Couldn't get json from server. Check LogCat for possible errors!",
                                Toast.LENGTH_LONG).show();
                    }
                });
            }

            return null;
        }

    }

1 Ответ

0 голосов
/ 15 апреля 2020

Во-первых, проверьте значения широты и долготы, которые должны быть нулевыми, что является причиной этой ошибки. Также добавьте проверку на нулевые значения для этих значений, прежде чем использовать ее в LatLng.

Во-вторых, даже если это другое вопрос, но все же, как вы упомянули, вы получаете некоторую ошибку синтаксического анализа, так почему бы вам не использовать Gson для анализа строки ответа json. Это может помочь вам с этой ошибкой. Попробуйте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...