This seems to work well, it will ask you to give permissions to access gps data and then our JS will initialize "yourPosition"
field with coordinates taken from navigator
(see: https://www.w3schools.com/html/html5_geolocation.asp)
CloudDeploy[
FormPage[{
EmbeddedHTML @ StringJoin[
"<script>function initYourPosition( position ) { document.getElementsByName('yourPosition')[0].value = ''+position.coords.latitude+','+position.coords.longitude;}</script>"
, "<script>navigator.geolocation.getCurrentPosition(initYourPosition)</script>"
]
, "yourPosition"->"GeoCoordinates"
}
, GeoGraphics[{ GeoMarker[#], Inset[#2,#]}& @@@ {
{Here,"\nHere"},
{$GeoLocation,"$GeoLocation"},
{FindGeoLocation[],"FindGeoLocation"},
{FindGeoLocation[$RequesterAddress],"by requester address"},
{#yourPosition,"navigator.geolocation"}
},
GeoRange->Quantity[6,"Kilometers"],
GeoZoomLevel->Automatic,
GeoCenter->#yourPosition
] &
]
, CreateUUID["temp/"]
, Permissions -> "Public"
]
And the final result after allowing access and submitting:

I found a a Community.wolfram.com post that does even more: Exact GeoPosition from FormFunction but requires a little bigger html+js template.
APIFunction
not aFormPage
makes it different. $\endgroup$