Объявление
public void Start();public void Start(float desiredAccuracyInMeters);
public void Start(float desiredAccuracyInMeters, float updateDistanceInMeters);
Параметры
desiredAccuracyInMeters | Точность услуги, которую вы хотите использовать, в метрах. Это определяет точность координат последнего местоположения устройства. Более высокие значения, такие как 500, не требуют, чтобы устройство использовало свой чип GPS и, таким образом, экономило заряд батареи. Более низкие значения, такие как 5-10, обеспечивают наилучшую точность, но требуют чипа GPS и, следовательно, потребляют больше энергии аккумулятора. Значение по умолчанию — 10 метров. |
updateDistanceInMeters | Минимальное расстояние в метрах, на которое устройство должно переместиться вбок, прежде чем Unity обновит Input.location. Более высокие значения, такие как 500, производят меньше обновлений и требуют меньше ресурсов для обработки. По умолчанию 10 метров. |
Описание
Запускает обновления службы определения местоположения.
После вызова этой функции вы можете получить доступ к последним координатам местоположения устройства. Для этого проверьте lastData в Input.location.
Примечание. Служба определения местоположения не сразу начинает отправлять данные о местоположении. Проверьте статус в Input.location, чтобы узнать текущий статус службы.
В Android использование этого метода в сценариях автоматически добавляет разрешение ACCESS_FINE_LOCATION в манифест Android. Если вы используете значения с низкой точностью, такие как 500 или выше, вы можете выбрать Местоположение с низкой точностью в Настройки проигрывателя, чтобы добавить ACCESS_COARSE_LOCATION разрешение вместо этого.
using UnityEngine;
using System.Collections;
public class TestLocationService : MonoBehaviour
{
IEnumerator Start()
{
// Check if the user has location service enabled.
if (!Input.location.isEnabledByUser)
yield break;
// Starts the location service.
Input.location.Start();
// Waits until the location service initializes
int maxWait = 20;
while (Input.location.status == LocationServiceStatus.Initializing && maxWait > 0)
{
yield return new WaitForSeconds(1);
maxWait--;
}
// If the service didn't initialize in 20 seconds this cancels location service use.
if (maxWait < 1)
{
print("Timed out");
yield break;
}
// If the connection failed this cancels location service use.
if (Input.location.status == LocationServiceStatus.Failed)
{
print("Unable to determine device location");
yield break;
}
else
{
// If the connection succeeded, this retrieves the device's current location and displays it in the Console window.
print("Location: " + Input.location.lastData.latitude + " " + Input.location.lastData.longitude + " " + Input.location.lastData.altitude + " " + Input.location.lastData.horizontalAccuracy + " " + Input.location.lastData.timestamp);
}
// Stops the location service if there is no need to query location updates continuously.
Input.location.Stop();
}
}