Version: 2020.3
public void Start ();
public void Start (float desiredAccuracyInMeters);
public void Start (float desiredAccuracyInMeters, float updateDistanceInMeters);

描述

启动位置服务更新。可能是上次位置坐标。

通过 Input.location.lastData 进行检索。 服务不会立即启动以发送位置数据。代码应 检查 Input.location.status 以获取当前服务状态。 desiredAccuracyInMeters - 所需服务精度(以米为单位)。使用 较高值(如 500)通常不需要打开 GPS 芯片, 因而可节省电池电源。5-10 之类的值可以用于获取 最佳精度。默认值是 10 米。 updateDistanceInMeters - 更新 Input.location 属性 之前设备必须横向移动的最小距离(以米为单位 测量)。值越高(如 500)意味着开销越少。默认值是 10 米。 在 Android 上,在脚本中使用此方法会自动将 ACCESS_FINE_LOCATION 权限添加到 android 清单。如果使用低精度值(如 500 或更高),则可以在“Player Settings”中选择“Low Accuracy Location”,从而改为添加 ACCESS_COARSE_LOCATION 权限。

using UnityEngine;
using System.Collections;

public class TestLocationService : MonoBehaviour { 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(); } }