Как решить "приложение не имеет достаточных разрешений геолокации" - PullRequest
0 голосов
/ 02 мая 2020

Привет, я пытаюсь получить значения lat и long в ioni c -4. Моя проблема здесь заключается в том, что когда я пытаюсь получить значения lat и long изначально, возникает ошибка приложение не имеет достаточных разрешений геолокации . Однако после того, как пользователь разрешит доступ к местоположению, когда я обновлю экран sh, я смогу получить значения широты и долготы. Ниже приведен мой код, который я попробовал.

Следовал этой документации: ioni c документ геолокации

  • Я использую @ionic-native/geolocation/ngx

  • Я создал service с именем location.service.ts. ниже код

import { Geolocation } from '@ionic-native/geolocation/ngx;
constructor(private geolocation: Geolocation) {
   
    this.geolocation.getCurrentPosition({maximumAge: 1000, timeout: 5000,
      enableHighAccuracy: true }).then((resp) => {
      console.log("geo location values", resp);
      
      this.servcurlat = resp.coords.latitude
      this.servcurlong = resp.coords.longitude
      console.log("lactionservice latlongs",this.servcurlat, this.servcurlong);

      let watch = this.geolocation.watchPosition();
    watch.subscribe((data) => {
      this.goeData = data;
      this.movelatlong = this.goeData.coords;
      this.movelat = this.goeData.coords.latitude;
      this.movelong = this.goeData.coords.longitude;
      console.log("moving data" , this.goeData);      
    });

    }).catch((error) => {
      console.log('Error getting location', error);    
    });
  }
}
  • И вызов location service в конструкторе компонента app.component.ts. Ниже приведен код

import { Component, ViewChild } from '@angular/core';
import { Platform } from '@ionic/angular';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { LocationService } from './_services/location.service';

@Component({
  selector: 'app-root',
  templateUrl: 'app.component.html',
  styleUrls: ['app.component.scss']
})

export class AppComponent {
  curlat: any = '';
  curlong: any = '';

  constructor(
    private router: Router,
    private localnotifications: LocalNotifications,
    private complaintservice: ComplaintregService,
    private locationservice: LocationService,
  ) {
    platform.ready().then(() => {
      this.initializeApp(statusBar, splashScreen);
    });
  }

  initializeApp(statusBar: StatusBar,
    splashScreen: SplashScreen) {

      this.curlat = this.locationservice.servcurlat;
      this.curlong = this.locationservice.servcurlong
      console.log("lat and long values: ",this.curlat,this.curlong);
  }
}

Проблема здесь в том, что служба определения местоположения запускается до того, как пользователь разрешает местоположение. когда я обновлял sh экран, теперь пользователь уже разрешил местоположение. Так что я могу получить значения.

Пожалуйста, дайте мне знать, как выйти из этой проблемы. Заранее спасибо и решение будет оценено.

1 Ответ

0 голосов
/ 03 мая 2020

Возможно, попытайтесь получить разрешение после страницы-заставки, например, на странице входа в систему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...