The reason why Staff are not being displayed accurately, or available to be Located, is usually due to the Privacy settings for ServiceM8.
You can find this setting by navigating on the individual device to:

ServiceM8 has taken steps to protect you and your Staff's privacy. The GPS location of the Staff member is ONLY sent & shared to ServiceM8 to be seen when the Staff Member is Clocked In for the day, and disables when they Clock Out. There is a separate setting in the ServiceM8 Settings (Settings > ServiceM8) for allowing to track during Lunch (this is turned off by default, so no tracking when the employee is on Lunch, assuming they are on their own time). Here is a ServiceM8 support doc which speaks to this:
https://support.servicem8.com/hc/en-us/articles/205357220-How-to-clock-on-off-and-start-end-break.