Player location not updated after first time

using UnityEngine;
using UnityEngine.Android;

public class LiveLocationReceiver : MonoBehaviour
{

public GameObject objectToMove; // Reference to the GameObject you want to move
private Vector3 lastPosition;
void Start()
{
    // Check and request location permissions
    if (!Permission.HasUserAuthorizedPermission(Permission.FineLocation))
    {
        Permission.RequestUserPermission(Permission.FineLocation);
        Permission.RequestUserPermission(Permission.CoarseLocation);
    }

    // Start location service
    Input.location.Start();
    lastPosition = objectToMove.transform.position;
}

void Update()
{
    // Check if location service is enabled and user has granted permission
    if (Input.location.isEnabledByUser && Permission.HasUserAuthorizedPermission(Permission.FineLocation))
    {
        // Get the last known location data
        LocationInfo location = Input.location.lastData;

        // Access location information
        float latitude = location.latitude;
        float longitude = location.longitude;
        if (objectToMove != null)
        {
            Vector3 unityCoordinates = GetUnityCoordinates(latitude, longitude);

            // Calculate the change in position
            Vector3 positionChange = unityCoordinates - lastPosition;

            // Set the GameObject's position based on north, south, east, and west movement
            objectToMove.transform.Translate(positionChange);

            // Update the last position
            lastPosition = unityCoordinates;
        }
       
    }
    
}

void OnDestroy()
{
    // Stop location service when the script is destroyed or no longer needed
    Input.location.Stop();
}

Vector3 GetUnityCoordinates(float lat, float lon)
{
    // Adjust this conversion logic based on your game's requirements
    float x = lon * 100; // Adjust scale as per your game's requirements
    float z = lat * 100; // Adjust scale as per your game's requirements
    return new Vector3(x, 0f, z);
}

}