2016-07-18 14 views
0

Ich schrieb einige Code mit NationalScript und eckig, um den Standort zu sehen.Nativescript Speicherort Plugin öffnet nur Standorteinstellungen

Aber obwohl GPS auf meinem Gerät eingeschaltet ist, sagt geolocation.isEnabled()false.

Plus, beim Ausführen geolocation.watchLocation(..) mein Gerät öffnet nur Standorteinstellungen. Und kommt mit der Fehlermeldung zurück:

Weiß jemand den Grund, warum meine App den Standort nicht verwenden kann?

Mein app.compoment.html:

<GridLayout columns="*,*" rows="auto,auto,auto"> 
    <Label text="Geolocation" class="title" row="0" colSpan="2"></Label> 
    <Button row="1" col="0" text="Start Tracking" (tap)="startTracking()"></Button> 
    <Button row="1" col="1" text="Stop Tracking" (tap)="stopTracking()"></Button> 
    <Label row="2" col="0" text="Latitude: {{latitude}}"></Label> 
    <Label row="2" col="1" text="Longitude: {{longitude}}"></Label> 
</GridLayout> 

Mein app.component.ts:

@Component({ 
selector: "my-app", 
templateUrl: "app.component.html", 
}) 
export class AppComponent { 

latitude = "42"; 
longitude = "5"; 
watchId = 0; 

public startTracking() { 
    console.log("Start Tracking"); 

    /* Check if GPS is enabled. */ 
    if (geolocation.isEnabled()) { 
     console.log("GPS is enabled."); 
    } else { 
     console.log("GPS is disabled."); 
    } 

    /* Get Location */ 
    this.watchId = geolocation.watchLocation(function (loc) { 
      if (loc) { 
       console.log("Current location is: " + loc); 
      } 
     }, function (e) { 
      console.log("Error: " + e.message); 
     }, 
     {desiredAccuracy: enums.Accuracy.any, updateDistance: 10, minimumUpdateTime: 1000}); 
} 

public stopTracking() { 
    console.log("Stop Tracking"); 
    if (this.watchId) { 
     geolocation.clearWatch(this.watchId); 
     this.watchId = 0; 
    } 
} 
} 

Antwort

1

Haben Sie die Berechtigungen explizit für Geolocation-Dienst auf dem Gerät versucht?

public enableLocationTap() { 
    if (!geolocation.isEnabled()) { 
     geolocation.enableLocationRequest(); 
    } 
} 

// in page.html 
<StackLayout> 
    <Button text="enable Location" (tap)="enableLocationTap()"></Button> 
</StackLayout> 

Nach dem Auslösen der Schaltfläche sollte die App ein Erlaubnis Popup mit Erlauben/Abbrechen Stil Nachricht zeigen.

+0

Ich werde versuchen, Ihre Lösung – Julisch

+0

Danke Mann. Es funktionierte. – Julisch

+0

Gibt es keine Möglichkeit, der App diese Berechtigungen automatisch bei der App-Installation zu erteilen? Zum Beispiel, wenn Sie pokemon go installieren, sagt es bereits, dass es Zugriff auf Ihre Standortdienste haben wird, wenn Sie diese App installieren und innerhalb der App müssen Sie nicht danach fragen. – Starwave