Alternatively, if your phone is Android, I would recommend using Tasker and the $2 plugin called AutoLocation.
There is unlimited geo-fences (circles) you can make with that app… They can be independent, or overlap, or even be entirely contained within a larger circle.
The way it works is you can selectively customize each circle to choose between WiFi location, low battery GPS, or high battery GPS. (you can also choose the GPS update frequency for each circle) It can calculate speed, delays, double checks and everything you asked for above.
One example: In certain locations, I need ultra precision, so I tell that geo-fence to check more frequently using the higher battery drain method… When I am home, and connected to my WiFi, then my location is known, so it automatically turns off GPS to conserve batteries. Once I disconnect from my home WiFi, the GPS goes back low battery mode GPS. Later, when I disconnect from my car’s bluetooth, the GPS goes into high battery mode for 2 minutes to capture my precise location. (it logs the location of my car, and triggers
a piston)
Here is a great 5 minute video showing this off.
Essentially, each geo-fence can have different rules and parameters.
Tasker and the plugin are quite advanced, but oh my God, the possibilities are limitless.
(IF you have Android)
Side Note:
Tasker can easily trigger
any piston (even pass arguments) whenever the conditions
are right.