Check out example codes for "Unity3d GPS code". It will help you in understanding the concepts better.

Code Example 1

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//By Nathan
//Test code.


public class GPSLocationTest : MonoBehaviour
{ 
    public float Latitude;
    public float Longitude;
    public float Oldlat;
    public float Oldlon;
    public AudioSource kickSource;
    // Start is called before the first frame update
    void Start()
    {
        kickSource = GetComponent<AudioSource>();
        Latitude = Input.location.lastData.latitude;
        Longitude = Input.location.lastData.longitude;
        int oldLat;
        int oldLon;
        
    }
    
    IEnumerator Start()
    {
        // First, check if user has location service enabled
        if (!Input.location.isEnabledByUser)
            yield break;

        // Start service before querying location
        Input.location.Start();

        // Wait until service initializes
        int maxWait = 20;
        while (Input.location.status == LocationServiceStatus.Initializing && maxWait > 0)
        {
            yield return new WaitForSeconds(1);
            maxWait--;
        }

        // Service didn't initialize in 20 seconds
        if (maxWait < 1)
        {
            print("Timed out");
            yield break;
        }

        // Connection has failed
        if (Input.location.status == LocationServiceStatus.Failed)
        {
            print("Unable to determine device location");
            yield break;
        }
        else
        {
            // Access granted and location value could be retrieved
            print("Location: " + Input.location.lastData.latitude + " " + Input.location.lastData.longitude + " " + Input.location.lastData.altitude + " " + Input.location.lastData.horizontalAccuracy + " " + Input.location.lastData.timestamp);
        }

        // Stop service if there is no need to query location updates continuously
        Input.location.Stop();
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.location.status == LocationServiceStatus.Running)
        {
        Latitude = Input.location.lastData.latitude;
        Longitude = Input.location.lastData.longitude;
        kickSource.Play.sound();
        }
        
        do
       {
            #code to detect movement up
            lat=NewLat;
            newLat++;
            
            #code to detect movement backwards
            lat=NewLat;
            newLat--;
    
            #code to detect movement left
            lat=NewLon;
            newLon++;
            
            #code to detect movement right
            lat=NewLon;
            newLon--;
            
            
       }
       while(newLat > lat || newLat < lat || newLon > lon || newLon < lon)
    }
    }
}

Learn ReactJs, React Native from akashmittal.com