Как реализовать Api V2 в android? - PullRequest
0 голосов
/ 11 июля 2020

Кто-нибудь может мне помочь, это мой код прослушиватель кликов на карте Google не работает. Этот мой код, пожалуйста, помогите мне, что мне не хватает. Когда я запускаю приложение, приложение делает cra sh и показывает Исключение нулевой точки в прослушивателе onclick карты Google. Пожалуйста, помогите мне, я хочу реализовать, когда пользователь зашел на карту, затем нажмите на карту и получите адрес этого места

public class WeatherMap extends FragmentActivity implements GoogleMap.OnMapClickListener, OnMapReadyCallback, GoogleMap.OnMapLongClickListener {
    GoogleMap Map;
    MarkerOptions markerOptions;
    LatLng latLng;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_weather_map);
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.

        SupportMapFragment supportMapFragment = (SupportMapFragment)
                getSupportFragmentManager().findFragmentById(R.id.mapw);
//        supportMapFragment.getMapAsync((OnMapReadyCallback) this);
        // Getting a reference to the map
       supportMapFragment.getMapAsync((OnMapReadyCallback) this);
       // googleMap = supportMapFragment.getMap();
      //  googleMap = supportMapFragment.getMap();
        // Setting a click event handler for the map
       // googleMap.setOnMapClickListener(this);

         Map.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
             @Override
             public void onMapClick(LatLng ar) {

                 latLng = ar;

                 // Clears the previously touched position
                 Map.clear();

                 // Animating to the touched position
                 Map.animateCamera(CameraUpdateFactory.newLatLng(latLng));

                 // Creating a marker
                 markerOptions = new MarkerOptions();

                 // Setting the position for the marker
                 markerOptions.position(latLng);

                 // Placing a marker on the touched position
                 Map.addMarker(markerOptions);

                 // Adding Marker on the touched location with address
                 new ReverseGeocodingTask(getBaseContext()).execute(latLng);
             }
         });


    }


    @Override
    public void onPointerCaptureChanged(boolean hasCapture) {

    }


    @Override
    public void onMapReady(GoogleMap googleMap) {

        Map=googleMap;

        googleMap.setOnMapClickListener(this);
    }

    @Override
    public void onMapClick(LatLng ar) {








       // latLng = ar;
   //    Toast.makeText(WeatherMap.this,latLng,Toast.LENGTH_LONG).show();

        new ReverseGeocodingTask(getBaseContext()).execute(latLng);
    }

    @Override
    public void onMapLongClick(LatLng latLng) {

    }

    private class ReverseGeocodingTask extends AsyncTask<LatLng, Void, String> {
        Context mContext;

        public ReverseGeocodingTask(Context context){
            super();
            mContext = context;
        }

        // Finding address using reverse geocoding
        @Override
        protected String doInBackground(LatLng... params) {
            Geocoder geocoder = new Geocoder(mContext);
            double latitude = params[0].latitude;
            double longitude = params[0].longitude;

            List<Address> addresses;
            addresses = null;
            String addressText="";

            try {
                addresses = geocoder.getFromLocation(latitude, longitude,1);
            } catch (IOException e) {
                e.printStackTrace();
            }

            if(addresses != null && addresses.size() > 0 ){
                Address address = addresses.get(0);

                addressText = String.format("%s, %s, %s",
                        address.getMaxAddressLineIndex() > 0 ? address.getAddressLine(0) : "",
                        address.getLocality(),
                        address.getCountryName());
            }

            return addressText;
        }

        @Override
        protected void onPostExecute(String addressText) {
            // Setting the title for the marker.
            // This will be displayed on taping the marker
            markerOptions.title(addressText);

            // Placing a marker on the touched position
            Map.addMarker(markerOptions);

        }
    }


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