Has anyone figured out a way to force data collection though only GPS in Field Maps and disable the ability to manually place a point or move a point. For a high accuracy data collection project the ability to manually set or accidentally move the map to a different target location while collecting data is undesirable. I know accuracy requirements can be set, but that only applies if using GPS. Before I submit in the ArcGIS Ideas I wanted to see if anyone has been able to accomplish this.
The workaround we currently employee is to use symbology to catch a user's attention. We display a huge, red symbol when "Position source type" (esrignss_positionsourcetype) from the GPS metadata fields is not "External GNSS Receiver":
If a user overrides the GPS and manually places a point, then when they submit it they get the big red dot because the Position source type is User Defined.
If a user accidentally edits an existing point placed with the GNSS receiver, and manually moves it somewhere else, And hits Update point, AND submits it, then the Position source type is changed to User Defined. So the symbol becomes the big red dot, however, the point is indeed now in the wrong place with no way to undo it easily... but that is a lot of steps to go through by accident.
Peter,
Thanks for the idea. That's a pretty good way to identify to the user that the location has been manually set. The only issue in my case is all of the data layers have a symbology on a different field when users are collecting data. I would have to figure out a work around for that. I guess one way would to be to filter out anything that doesn't have the correct metadata value from the feature service in the web map and then add the same layers map service and filter and symbolize it with the red dot. I still think the option could to force gps collection in the field maps configuration would be a great solution to this problem.
@MartinOwens1 I agree, such a feature would be a nice option.
Meanwhile, to accomplish the suggested workaround with more complicated symbology, I might recommend using an Arcade expression, rather than adding the layer twice.
For example, if you are using unique values to symbolize your data, then you could add a value for the big red circle to your style. In your Arcade expression, if the Position source type is User Defined then you would return that value, else, your expression would return the value for the desired attribute.
// esrignss_positionsourcetype domain uses code of 1 for "User Defined".
if($feature["esrignss_positionsourcetype"] == 1 ) {
// Return value that equates to the big red circle in your style.
return 0
}
else {
// Return value for attribute you want to symbolize.
return $feature.Category
}
Hi, Peter. We are interested in this workaround that you suggested. Is it okay if you share to us the step-by-step process on how you did this?
@AngelNicoleAlvaro1 In the earlier, simple example, you configure the layer's style to use the "esrignss_positionsourcetype" field and "Types (unique symbols)". You specify whatever symbols you want to use for the different values of that field. If you want alert users when the field has a value of "User Defined", then make that value's symbol something big, obnoxious, and different than what is expected for when things are working.
In the later example, where the user wants to use their own Category field for unique value styling, then you could use the example Arcade script above. It assumes that the user has not defined a "0" category, so that it can return that value, when the esrignss_positionsourcetype is "User Defined". Then, in the symbology, you can add a "0" category, or leverage the "Other" setting, and give it a big and obnoxious symbol, while points with good values for esrignss_positionsourcetype will return the Category value, and get styled according to what you've defined for unique Category values.
Hope that makes sense!