Spanish [Solucionado]Trazar dos puntos en google maps

Carlos marin

Active Member
Licensed User
Longtime User
Hola a todos, e buscado en los foros acerca de esto y no e visto a nadie usarlo (o definitivamente lo pase por alto). es posible dibujar una traza entre dos puntos en googlemaps así tipo UBER, no una linea recta sino la traza por las calles para llegar de un punto A al B. asi como en el adjunto
 

Attachments

  • uber_mapa.jpg
    uber_mapa.jpg
    18.1 KB · Views: 1,126

Seneca

Active Member
Licensed User
Hola.

No me queda claro si lo que buscas es que el GoogleMaps te calcule y trace la ruta, indicando tú únicamente el punto de inicio y el de destino o, por el contrario, si eres tú el que indica cada tramo a seguir en el recorrido, punto por punto.

Para el primer caso yo lo que hago es poner en marcha la App GoogleMaps (como aplicación externa), indicando el punto de origen y destino.

Para el segundo caso, aunque no lo he probado, la librería GoogleMapsExtras te permite dibujar Polilíneas en Google Map. Por tanto has de indicar cada vértice de la polilínea, no basta con darle el inicio y el fin.

https://www.b4x.com/android/help/googlemapsextras.html

https://www.b4x.com/android/forum/threads/googlemapsextras.26277/#content


Saludos.
 

Carlos marin

Active Member
Licensed User
Longtime User
Hola.

No me queda claro si lo que buscas es que el GoogleMaps te calcule y trace la ruta, indicando tú únicamente el punto de inicio y el de destino o, por el contrario, si eres tú el que indica cada tramo a seguir en el recorrido, punto por punto.

Para el primer caso yo lo que hago es poner en marcha la App GoogleMaps (como aplicación externa), indicando el punto de origen y destino.

Para el segundo caso, aunque no lo he probado, la librería GoogleMapsExtras te permite dibujar Polilíneas en Google Map. Por tanto has de indicar cada vértice de la polilínea, no basta con darle el inicio y el fin.

https://www.b4x.com/android/help/googlemapsextras.html

https://www.b4x.com/android/forum/threads/googlemapsextras.26277/#content


Saludos.
Hola Seneca. es el primer paso, yo dando los dos puntos y que google-maps me trace la ruta, por lo que estoy leyendo no se puede hacer con el SDK, hay que utilizar la api. todos dicen lo mismo pero no tienen ejemplos, supongamos yo utilizo la api y esa me responde (utilizando httpultis si no estoy mal) y ahora que hago con esos datos?? como los utilizo para trazar la ruta. eso es lo que no dicen
 

Seneca

Active Member
Licensed User
Hola.

Yo estoy usando la Api de Google Map para calcular la distancia a pie entre dos puntos. De manera similar se puede usar para que te calcule la mejor ruta, indicando los puntos de origen y destino, el tipo de ruta (pie, vehículo, etc), si se ha de transitar por determinados puntos intermedios y otros tantos parámetros opcionales.

Aquí tienes documentación oficial al respecto de esta Api. Como resultado obtendrás un archivo en XML o JSON con las coordenadas de cada cambio en el trazado de la ruta. Entiendo que lo que has de hacer con ese archivo es interpretarlo, extraer las coordenadas de cada "waypoint" y usando la polilínea que te indicaba en un mensaje anterior dibujar la ruta en tu mapa.

Yo empezaría por leer la documentación de google que te he referido antes para entender todo el procedimiento. El siguiente paso sería aprender a trabajar con el JSON y extraer la información importante.

Saludos.
 

Carlos marin

Active Member
Licensed User
Longtime User
Hola.

Yo estoy usando la Api de Google Map para calcular la distancia a pie entre dos puntos. De manera similar se puede usar para que te calcule la mejor ruta, indicando los puntos de origen y destino, el tipo de ruta (pie, vehículo, etc), si se ha de transitar por determinados puntos intermedios y otros tantos parámetros opcionales.

Aquí tienes documentación oficial al respecto de esta Api. Como resultado obtendrás un archivo en XML o JSON con las coordenadas de cada cambio en el trazado de la ruta. Entiendo que lo que has de hacer con ese archivo es interpretarlo, extraer las coordenadas de cada "waypoint" y usando la polilínea que te indicaba en un mensaje anterior dibujar la ruta en tu mapa.

Yo empezaría por leer la documentación de google que te he referido antes para entender todo el procedimiento. El siguiente paso sería aprender a trabajar con el JSON y extraer la información importante.

Saludos.
muchas gracias Seneca en cuanto lo tenga listo comparto el código para que todos lo vean. saludos !
 

Carlos marin

Active Member
Licensed User
Longtime User
Buenas tardes como siempre lo prometido es deuda

B4X:
Sub GetDirections(source As String, destination As String) 'As ResumableSub
    Dim j As HttpJob
    Dim API_KEY As String = "Su apikey aqui" 'directions api key
    '    Get directions (Location A -> Location B)
    j.Initialize("Directions", Me)
    j.Download2("https://maps.googleapis.com/maps/api/directions/json", Array As String("origin", source,"destination", destination,"key",API_KEY))

    Wait For (j) JobDone(j As HttpJob)
    If j.Success Then
        Dim parser As JSONParser
        parser.Initialize(j.GetString)
        Dim root As Map = parser.NextObject
        If root.Get("status") = "OK" Then
            Dim routes As List = root.Get("routes")
            For Each colroutes As Map In routes
                Dim legs As List = colroutes.Get("legs")
                For Each collegs As Map In legs
                    start_address  = collegs.Get("start_address")
                    end_address = collegs.Get("end_address")
                    Dim steps As List = collegs.Get("steps")
                    For Each colsteps As Map In steps
                        Dim duration As Map = colsteps.Get("duration")
                        travelduration = travelduration + duration.Get("value")
                        Dim distance As Map = colsteps.Get("distance")
                        traveldistance = traveldistance + distance.Get("value")
                    Next
                    Dim overview_polyline As Map = colroutes.Get("overview_polyline")
                    polyPoints = overview_polyline.Get("points")
                Next
            Next
            j.Release
            drawDirections
            ToastMessageShow("Distance = " & traveldistance & "m, Time = " & travelduration & "s", True)
            lblinfo.Text = "Distancia = " & traveldistance & "m, Tiempo = " & travelduration & "s"
        Else
            ToastMessageShow("Error: " & root.Get("status"), True)
        End If
    Else
        Log("Error!")
    End If
    j.Release
End Sub
 
Top