cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
iwonder
Post Prodigy
Post Prodigy

Monitor Timer value

Thank you for taking the time to read my question.

 

I have a timer that currently loops every 15 seconds. OnTimerEnd I save something to a collection.

 

My problem is, it seems that by the time I save to the collection and then reset the timer so it loops more than an second passes and my timer develops lag (for lack of a better term). I put another timer on my screen and start them at the same time (as close as I can) and as I watch them, the times diverge.

 

Is there a way to monitor the Timer.Value and then do something like IF(Mod(Timer.Value,15000) = 0,Do my stuff)?

 

I tried setting a variable to true and then setting a TextInput default value to the variable. Then I tried to use the OnChange event, but it didn't seem to fire.

 

Thanks

19 REPLIES 19

ok..... I have this so far

 

sLat = starting Latitude

sLong = starting Longitude

 

eLat = ending Latitude

eLong = ending Longitude

 

Asin(Sqrt(Power(Sin((Radians(eLat)-Radians(sLat))/2),2)+(Cos(sLat)*Cos(eLat)*Power(Sin((Radians(eLong)-Radians(sLong))/2),2))))

 

I think I have the formula right so far, I'm just not sure how to do 2r * all the above?

 

r is the radius of the sphere....

 

what sphere? the earth?

 

Sorry if I'm so clueless here...

 

Thanks

Not bad for a first crack at it! Yes, the r in the equation is the mean radius of the earth. Use 6371007 meters as "close enough", since the Earth isn't a perfect sphere anyways.

 

You have a couple of cosine terms calculating on degrees, not radians, so that will give you a bad answer. Good coding practice is to pre-calculate terms to simplify the code, such as the Radians function calls.

_________________________________________________________________________________________
Help the community help more users by choosing to "Accept as Solution" if this post met your needs. If you liked the post and want to show some appreciation, please give it a Thumbs Up.

Oops! Thanks!

 

what do you mean precalculate? Put the radians into variables?

 

I’ll finish it off tonight and compare to the API 


@iwonder wrote:

Oops! Thanks!

 

what do you mean precalculate? Put the radians into variables?

 

I’ll finish it off tonight and compare to the API 


Here's what I am doing to precalculate radians, to simplify my checks against your code:

Set(sLat, Radians (50.10));
Set(sLong, Radians (-114.10));
Set(eLat, Radians (50.12));
Set(eLong, Radians(-114.12));

I am using some hardcoded values for testing, but when I call eLat or sLong, I already have the values in radians.

_________________________________________________________________________________________
Help the community help more users by choosing to "Accept as Solution" if this post met your needs. If you liked the post and want to show some appreciation, please give it a Thumbs Up.

How is this?

2*6371007*Asin(Sqrt(Power(Sin((Radians(eLat)-Radians(sLat))/2),2)+(Cos(Radians(sLat))*Cos(Radians(eLat))*Power(Sin((Radians(eLong)-Radians(sLong))/2),2))))

I think you've got it. I broke it up so it is a little easier to read and debug:

2*6378000*
Asin(
    Sqrt(
        Power(
            Sin(
                (Radians(eLat)-Radians(sLat))/2
            )
        ,2)+
        (
            Cos(Radians(sLat))*
            Cos(Radians(eLat))*
            Power(
                Sin(
                    (Radians(eLong)-Radians(sLong))/2
                )
            ,2)
        )
    )
)

This formula assumes a spherical shape for the Earth (it's not, really), so it will be accurate to a few meters per kilometer. How does it compare to the results you are getting from the API?

 

_________________________________________________________________________________________
Help the community help more users by choosing to "Accept as Solution" if this post met your needs. If you liked the post and want to show some appreciation, please give it a Thumbs Up.

Hi @BCLS776 

 

I'm testing again and I'm getting different answers. Bing Maps is giving me 0.045 and the calculation is giving me 48.91160505.

 

Bing Maps is in Km's, what is the calculation unit of measure?

 

Thanks!

I read further in the Wiki and saw the sphere measurements, so I used 6356.752 instead of 6378000

 

Now my values are:

Bing Maps: 0.045

Formula: 0.04880217

 

If I use 6378.137 as the circumference I get

Bing Maps: 0.045

Formula: 0.04896634

 

I'm not sure what formula Bing Maps uses... I'm guessing Bing Maps is more accurate?

 

Thanks again

The formula you built will calculate in meters or kilometers depending on the units of r you use for Earth's radius. You could use miles too, if you like. Is matching Bing Maps within 3-4 meters "good enough" for your purposes? That's how close you are.

 

Here's where my geomatics engineer side geeks out a bit: The haversine formula is a quick approximation based on assuming the Earth is a perfect sphere. There are formulas available that better account for Earth's true shape, but they are more difficult to code. Bigger formulas also weigh down your app's performance. As well, how accurate is the sensor you are using to come up with these coordinates? On a good day, a smartphone GPS position might be true to within 5 meters at each point measured. And then there are different "kinds" of distances. Ones that follow the curvature of Earth, ones that are 3-D spatial, or 2-D projections on some sort of flat plane. I could go on and on...

In the end, did we make something that will save you a time delay in calling the Bing Maps API?

_________________________________________________________________________________________
Help the community help more users by choosing to "Accept as Solution" if this post met your needs. If you liked the post and want to show some appreciation, please give it a Thumbs Up.

I have it all working now with the formula. It seems that the formula is quite close to Bing Maps. Since I'm not having to call the API I've upped my frequency to 10 seconds (may go more frequent). Over one minute I was only 1 second off on the time (elapsed time 1:01). One of the OnTimerEnd was a second longer, the rest were 10 seconds on the time stamp.

 

Thank you so much for ALL YOUR HELP. I have really learned a lot and had a good time learning. I'll mark your post with the formula as the solution.

 

have a great day!

Helpful resources

Announcements
UG GA Amplification 768x460.png

Launching new user group features

Learn how to create your own user groups today!

Community Connections 768x460.jpg

Community & How To Videos

Check out the new Power Platform Community Connections gallery!

M365 768x460.jpg

Microsoft 365 Collaboration Conference | December 7–9, 2021

Join us, in-person, December 7–9 in Las Vegas, for the largest gathering of the Microsoft community in the world.

Top Solution Authors
Top Kudoed Authors
Users online (2,102)