entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

3votos

Android: lanzar navegador nativo android

Hola.

Tengo una activity en la cual coloco un mapa (del tipo GoogleMap) y unos marcadores, edificios, (sus posiciones sacadas de una Base de datos). También localizo la posición del usuario para saber la distancia entre él y los edificios.

Lo que me gustaría es lo siguiente.

cuando el usuario seleccione en un marcador (edificio), que tenga el botón de "llévame ahí" y se abrá el navegador por defecto de Android.

He estado mirando y antes debía de haber una api llamada DrivingDirecction.

Alguna proposición / guía ?

Gracias.

2 Respuestas

0voto

egoitz_gonzalez Puntos10050

Hola.

Parece que ya lo conseguí. Aunque haber si se pude perfeccionar un poquito. En el metodo onInfoWindowClick escribí el siguiente código:

String nombre = inst.getNombre();
double lat = instLoc.getLatitude()
double longi = instLoc.getLongitude();

Uri geoLocation = Uri.parse("geo:0,0?q="+lat+","+longi+"("+nombre+")");
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(geoLocation);

if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
             }

Con esto se me abre la siguiente pantalla:

enter image description here

Haciendo clic en el icono de el coche (Esquina inferior derecha), avanzamos a la segunda pantalla la cual ya nos muestra las posibles rutas, y en la posibilidad de elegir medio de transporte.

enter image description here

Con esto, la duda que planteo queda resuelta, pero para poder ser mas precisa, lo ideal sería que al clicar en el marker la pantalla que apareciese sea la segunda. Es decir, saltarse la primera pantalla. Esto no sé como hacerlo.

Alguna idea?

0voto

Peter comentado

Si esta es la solución, por favor marcala como correcta y para la otra duda, mejor crea otra pregunta, así se soluciona punto por punto relacionado con el tema principal. :D

1voto

Leonardo-Tadei Puntos227320

Hola Egoitz,

podrías hacerlo agregando un método como este a tu clase que visualiza el mapa:

public void abrirEnlace(View v) {
   Intent browserIntent = new Intent("android.intent.action.VIEW",
   Uri.parse("http://www.unsitioweb.com")); // reeemplazar el sitio por el contenido de alguna variable de la clase que contenga en URL o agregando un parámetro más.
   startActivity(browserIntent);
}

Saludos!

0voto

egoitz_gonzalez comentado

Hola. Gracias Leonardo pero eso no es lo que busco. Eso me abrirá el navegador web. Yo me refiero al navegador GPS.

Adjuntos dos imágenes de ejemplo. La primera es la que aparece cuando en la app de Google maps marcamos un punto.

enter image description here

La segunda imagen es después de seleccionar la opción ruta de la primera imagen.

enter image description here

Lo que yo quiero es que mi mapa tenga el botón ruta y me se dirigía a la segunda pantalla que esta ya lanzaría el navegador GPS nativo de Android.

Gracias.

0voto

Leonardo-Tadei comentado

Hola Egoitz,

no estoy seguro de entender qué es lo que estás queriendo hacer... en tu pregunta original ponés " que tenga el botón de "llévame ahí" y se abrá el navegador por defecto de Android." y por "navegador por defecto" se entiende "el browser por defecto que tenga instalado el dispositivo".

Ahora bien, desde el mapa en la 1er imagen, vas a la pantalla de opciones de la 2da imagen. Decís que "el mapa tenga el botón ruta"... esto lo manejás seteando las opciones que querés que tenga el mapa al momento de lanzarlo, junto con las opciones de navegación, de cambiar a satélite o mapa, etc.

Lo que sigo sin entender, es qué es lo que querés que pase cuando se presione sobre "el botón ruta"... sospecho que será que se trace una ruta entre el punto actual y otro punto seteado, pero podrían ser muchas otras cosas ;-)

0voto

egoitz_gonzalez comentado

Hola Leonardo.

La verdad es que el la explicación que doy en el titulo puede ser confusa. Cuando digo navegador me refiero al navegador GPS de Android. Pero ahora me he dado cuenta que no hay una aplicación de navegación GPS como tal (juraría que antes sí había) sino que es la propia app de Google Maps la que hace la función de navegador.

En definitiva tus sospechas son ciertas. Quiero que al pulsar el botón ruta se trace un camino entre la ubicación actual del usuario y el punto seleccionado. Yo creo que esto no se debe hacer picando código sino que se puede "delegar" en la app de Google Maps que viene por defecto en Android. Adjunto otras dos imágenes.

En la última imagen se puede apreciar que Android nos guía en una navegación paso a paso hasta nuestro destino.

enter image description here

enter image description here

Espero haberme explicado bien esta vez.

Gracias.

0voto

Leonardo-Tadei comentado

Ahora sí ;-)

Si tu app es del estilo webapp y estás escribiendo código mayormente en JavaScript, esto traza un recorrido entre dos puntos datos:

miMapa.drawRoute({
    origin: [actLat, actLon],  // origen en coordenadas anteriores
    // destino en coordenadas del click o toque actual
     destination: [latSave, lonSave],
     travelMode: 'driving',
     strokeColor: color,
     strokeOpacity: 0.7,
     strokeWeight: 5
 });

Si tu app es del tipo "me conecto al servidor para trabajar", podés implementar algo así con un webservices y usando la API de Google Maps y teniendo en cuenta sus límites: https://developers.google.com/maps/documentation/geocoding/?hl=es-419&csw=1#Limits

Si tu app es más bien del tipo nativo, podrás usar la API de Google Maps haciendo una llamada al URL y luego trabajando con las respuestas... estoy buscando y no encuentro un equivalente nativo a drawRoute(), lo cuál me llama mucho la atención :-( Buscá por ese lado si lo querés implementar todo en Java.

Saludos!

0voto

egoitz_gonzalez comentado

Hola Leonardo.

Mi app es nativa. Cuando dices realizar una llamada a la URL te refieres al Web service?

Yo pensaba que la pregunta que planteaba tenía fácil respuesta. Es decir, por la forma de funcionar y de comunicación entre apps que tiene Android pensaba que en un par de lineas de código se podría abrir Google Maps desde mi app. Simplemente mandandole dos posiciones. Pero por lo que comentas parece que esto no es posible?

Gracias

0voto

egoitz_gonzalez comentado

Hola.

Por ejemplo con el siguiente código consigo lanzar Google maps en la posición que indico.

        double lat = instLoc.getLatitude();
        double longi = instLoc.getLongitude();
        Uri geoLocation = Uri.parse("geo:"+lat+","+longi+"");
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setData(geoLocation);
        if (intent.resolveActivity(getPackageManager()) != null) {
            startActivity(intent);
        }

En este caso, la posición que le envio, por ejemplo, Uri geoLocation = Uri.parse("geo:47.6,-122.3"); , la toma como si fuese mi posicióin actual. Y lo que quiero es que la tome como posición de destino. Es decir, lo que yo quiero es indicar tanto la posición actual como la de destino.

Primero sale esta pantalla y al pulsar en el icono de la fecha de trafico (en la esquina superior derecha a la izquierda del icono de una persona) sale la segunda pantalla que envió.

enter image description here

enter image description here

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta