0 votos
Hola nuevamente, mi pregunta derechamente eso, quiero poner un maps en un alert...

¿SE PUEDE? y si se puede, ¿tienes informacion?

 

Obvienamente quiero obtener corrodernadas de el
preguntado por PabloMorales May 7, 2015 en Android
editado por PabloMorales May 7, 2015

2 Respuestas

0 votos
        final   View view = getActivity().getLayoutInflater().inflate(R.layout.alerta, null);
        MapFragment mapFragment = new MapFragment();
        FragmentTransaction transaction = getFragmentManager().beginTransaction();
        transaction.add(R.id.mapView,mapFragment).commit();

//        GoogleMap map = mapFragment.getMap();

        double daCurrentLat = -36.73033316984751;
        double daCurrentLong = -72.31710623949766;
        LatLng here = new LatLng(daCurrentLat, daCurrentLong);

        mapFragment.getMap().moveCamera(CameraUpdateFactory.newLatLngZoom(here, 16));
        mapFragment.getMap().addMarker(new MarkerOptions().position(here).title("Ubicación actual"));
        mapFragment.getMap().animateCamera(CameraUpdateFactory.zoomTo(15), 2000, null);

//        map.addMarker(new MarkerOptions().position(new LatLng(daCurrentLat, daCurrentLong)).title("Ubicación actual"));
//        map.moveCamera(CameraUpdateFactory.newLatLngZoom(here, 15));
//        map.animateCamera(CameraUpdateFactory.zoomTo(15), 2000, null);

Hola, este es el codigo que encontre para la solucion, se ve el mapa pero a la hora de manejar el mapa (en este caso el addMarker) me arroja el siguiente error

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.maps.GoogleMap.moveCamera(com.google.android.gms.maps.CameraUpdate)' on a null object reference

Obviamente me dice que el objeto es nulo, entonces ¿a donde tengo que referenciar?

respondido por PabloMorales May 7, 2015
Crea mejor un Fragment con un Mapa y lo pones en el diálogo, es más fácil. Realmente tienes que poner un DialogFragment que es una herencia de Fragment.
0 votos
No deberías de tener ningún problema, ya que si metes el Fragment que contenga al maps en un dialogo todo funciona igual que si no lo fuera. Tienes ejemplo de esto en http://developer.android.com/guide/topics/ui/dialogs.html
respondido por Ramon [Admin] May 8, 2015

Hola, gracias por tu respuesta...  revisé la página y mi código y solucione el tema.

public class InfoPredio extends DialogFragment{
    GoogleMap mMap;
    MapFragment mapFragment;
    @SuppressLint("CommitTransaction")
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        final   View view = getActivity().getLayoutInflater().inflate(R.layout.alert_predio, null);

        mapFragment = ((MapFragment) getFragmentManager().findFragmentById(R.id.mapView));
        mapFragment.getMapAsync(new OnMapReadyCallback() {
            @Override
            public void onMapReady(GoogleMap googleMap) {
                mMap = googleMap;
                mMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() {
                    public void onMapLongClick(LatLng point) {
                        setUpMap();
                        mMap.addMarker(new MarkerOptions()
                                .position(new LatLng(point.latitude, point.longitude)) );
                    }
                });
            }
        });



        final AlertDialog alertDialog = new AlertDialog.Builder(getActivity())
                .setView(view)
                .setTitle("Como Ingreso un Mapa?")
                .setPositiveButton(android.R.string.yes, null) 
                .setNegativeButton(android.R.string.no, null)
                .create();
        alertDialog.setCanceledOnTouchOutside(false);
        setCancelable(false);



        alertDialog.setOnShowListener(new DialogInterface.OnShowListener() {
            @Override
            public void onShow(final DialogInterface dialog) {
                Button positive = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE);
                Button negative = alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE);

                positive.setOnClickListener(new View.OnClickListener() {
                    public void onClick(View view) {
                            dialog.dismiss();
                    }

                });

                negative.setOnClickListener(new View.OnClickListener() {
                    public void onClick(View view) {
                        dialog.cancel();
                    }
                });
            }
        });



        return alertDialog;
    }

    private void setUpMap() {
        mMap.clear();
        mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
        mMap.setMyLocationEnabled(true);
    }
}

Pero ahora surge un problema de visual, el mapa se ve opaco, oscuro, tienes alguna informacion al respecto

Y asi deberia verse

Por la imagen ¿Lo has solucionado entonces?

Parece como si estuviera en estado de pausa o como si hubiera algo encima que lo oscureciera. Comprueba esto y las propiedades del mapa.
Si, el codigo de mas arriba es la solucion para poner el mapa dentro del dialogo

pero se ve oscuro, la de abajo solo es una captura de cuando cierro el mapa, justo hay se ve normal

el codigo es el mismo...  este es el xml, haber que me dices

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="New Text"
        android:id="@+id/textView22" />

    <fragment
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/mapView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:context="direccion.mapa"
        android:gravity="center"
        android:name="com.google.android.gms.maps.MapFragment" />

</LinearLayout>

 

Entonces debe de ser un problema con el Focus. Comprueba las propiedades.
El Layout lo veo correcto. Puede que sea alguna incompatibilidad del Mapa. Prueba a añadir el Fragment dinámicamente, para que se añada después de la carga del diálogo.
hola, preguntaba si habias encontrado informacion de la vista? he tratado de solucionarlo pero no lo logro...  

pda: podrias investigar el tema por favor...
¿La vista te refieres al Layout? Lo que te comentaba anteriormente, hay que probar si es un problema con el ciclo de vida, prueba a cargar dinámicamente el Fragment del mapa