Sub AnimateTo(fm As String, Duration As Int, Targetlat As Double, Targetlon As Double, placa As String, i As Int,cod_app As String)
Dim oldpos = MapOfMarkers.Get(fm) As LatLng
'**
'** si no se ha creado el marker por primera vez
'**
If oldpos.IsInitialized = False Then
Dim pos As LatLng
pos.Initialize(Targetlat, Targetlon)
MapOfMarkers.Put(fm,pos)
m(i) = gmap.AddMarker(Targetlat, Targetlon, placa)
Dim cp As CameraPosition
cp.Initialize(Targetlat, Targetlon, 16)
gmap.MoveCamera(cp)
AttachInfoWindow(m(i),"Placa: "&placa)
Return
End If
If Duration = 0 Then
Dim punto As LatLng
punto.Initialize(Targetlat,Targetlon)
m(i).Position=punto
Return
End If
'ver si no se ha movido y retorna
'grafica y retorna
Dim punto_actul As LatLng
punto_actul.Initialize(Targetlat,Targetlon)
If (oldpos.Latitude = punto_actul.Latitude) And (oldpos.Longitude = punto_actul.Longitude) Then
m(i).Position=punto_actul
MapOfMarkers.Put(fm,punto_actul)
'=====================
'// ENVIAR MUCHO TIEMPO DETENIDO SIN
'// CAMBIAR POSICION
Dim cont_mark_estac = Map_estacionado.Get(fm) As String
If cont_mark_estac = "null" Then
Map_estacionado.Put(fm,"1")
Else
Dim cnt = cont_mark_estac As Int
If cnt >= 3 Then
Map_estacionado.Put(fm,"0")
'**************
Dim Pushing As pin
Pushing.apun = i
Pushing.heading = getBearing(punto_actul,punto_actul)
Pushing.lat = punto_actul.Latitude
Pushing.lon = punto_actul.Longitude
Pushing.fm = fm
Log($"Grados ${Pushing.heading}"$)
enviar_a_MQQT(Pushing,cod_app)
'**************
Else
cnt = cnt + 1
Map_estacionado.Put(fm,cnt)
End If
End If
Return
End If
'// RESETEA CONTEO DE TIEMPO SIN ENVIAR
'//
Map_estacionado.Put(fm,"0")
Dim StartTime As Long = DateTime.Now
Dim StartX As LatLng
'***********
' si ya existe busca el ultimo punto
'***********
StartX.Initialize(oldpos.Latitude,oldpos.Longitude)
Do While DateTime.Now < StartTime + Duration
Dim f As Double = (DateTime.Now - StartTime) / Duration
Dim lt As Double = StartX.Latitude + f * (Targetlat - StartX.Latitude)
Dim ln As Double = StartX.Longitude + f * (Targetlon - StartX.Longitude)
Dim punto As LatLng
punto.Initialize(lt,ln)
m(i).Position=punto
' Dim CameraPosition1 As CameraPosition
' CameraPosition1.Initialize(lt,ln, 15)
'**************
Dim Pushing As pin
Pushing.apun = i
Pushing.heading = getBearing(StartX,punto)
Pushing.lat = punto.Latitude
Pushing.lon = punto.Longitude
Pushing.fm = fm
Log($"Grados ${Pushing.heading}"$)
enviar_a_MQQT(Pushing,cod_app)
'**************
StatusBar1.Text = "Connected "&i
Sleep(10)
Loop
'
Dim punto As LatLng
punto.Initialize(Targetlat,Targetlon)
m(i).Position =punto
MapOfMarkers.Put(fm,punto)
End Sub