LocationService.Start
Declaration
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 Если вы используете низкие значения точности, такие как 500 или выше, выберите Низкая точность местоположения в Настройки Игрока добавить ACCESS_COARSE_LOCATION разрешение вместо.
Он WebGL, этот метод должен быть вызван в ответ на жест пользователя (например, щелчок мыши) в рамках сопутствующей процедуры. Примечание: Услуги геолокации доступны только с HTTPS подключения, за исключением периода разработки, когда вы можете использовать http://localhost. Использование desiredAccuracyInMeters и updateDistanceInMeters не поддерживается, поскольку устройство пользователя определяет эти два значения.
using UnityEngine; using System.Collections;
public class TestLocationService : MonoBehaviour { IEnumerator Start() { // Check if the user has location service enabled. if (!Input.location.isEnabledByUser) Debug.Log("Location not enabled on device or app does not have permission to access location");
// Starts the location service. float desiredAccuracyInMeters = 10f; float updateDistanceInMeters = 10f;
Input.location.Start(desiredAccuracyInMeters, updateDistanceInMeters);
// 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) { Debug.Log("Timed out"); yield break; }
// If the connection failed this cancels location service use. if (Input.location.status == LocationServiceStatus.Failed) { Debug.LogError("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. Debug.Log("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(); } }