Как добавить ImageButton, имитирующую кнопку моего местоположения при просмотре карты - PullRequest
0 голосов
/ 02 июля 2019

Посмотрите, я создал функцию, которая имитирует мою кнопку местоположения API карты Google, а затем я вызываю ее с помощью onClickListner. И это работает просто отлично, но проблема в том, что я смог добавить только уменьшение и увеличение анимации к нему, я хочу, чтобы он работал так же, как кнопка «сток». Пожалуйста, предложите мне любое улучшение или ЛЮБОЙ другой «лучший» метод для достижения этого.

Это моя кнопка

ImageButton Mylocation = (ImageButton) findViewById(R.id.my_location);
        Mylocation.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

               myPosition();
            }
        });

И это моя функция

 public void myPosition() {
        if (gps.canGetLocation()) {


            latitude = gps.getLatitude();
            longitude = gps.getLongitude();
            // Toast.makeText(getApplicationContext(), "  "+latitude+" "+longitude,Toast.LENGTH_LONG).show();
            Longitude = Double.toString(latitude);
            Latitude = Double.toString(longitude);
        }
        // Add a marker in Sydney and move the camera
        LatLng me = new LatLng(latitude, longitude);
        //MyMarker= mMap.addMarker(new MarkerOptions().position(me).snippet("My Location"));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(me));
        CameraUpdate center = CameraUpdateFactory.newLatLng(me);
        CameraUpdate zoom = CameraUpdateFactory.zoomTo(17);
        mMap.moveCamera(center);
        mMap.animateCamera(zoom);

        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;
        }
        mMap.setMyLocationEnabled(true);


    }

Я хочу добавить собственную кнопку, указывающую на мое местоположение, а также анимацию масштабирования и прокрутки (как в кнопке «сток»)

1 Ответ

0 голосов
/ 02 июля 2019

Я сделал нечто подобное в приложении, которое сделал.Я использовал animateCamera и newLatLngZoom следующим образом:

                mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(YourLat,YourLong),yourZoom);

вы можете узнать больше о CameraUpdateFactory здесь и о animateCamera здесь

edit

public void myPosition () {if (gps.canGetLocation ()) {

        latitude = gps.getLatitude();
        longitude = gps.getLongitude();
        // Toast.makeText(getApplicationContext(), "  "+latitude+" "+longitude,Toast.LENGTH_LONG).show();
        Longitude = Double.toString(latitude);
        Latitude = Double.toString(longitude);
    }
    // Add a marker in Sydney and move the camera
    LatLng me = new LatLng(latitude, longitude);
    //MyMarker= mMap.addMarker(new MarkerOptions().position(me).snippet("My Location"));

     mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(me),17); //This is where it should be


    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;
    }
    mMap.setMyLocationEnabled(true);


}
...