2013-06-13 4 views
5

Ich möchte den Standort des Nutzers in Google Maps anzeigen, der my-location layer aktiviert. Für diese Funktion ist jedoch die Berechtigung "ACCESS_FINE_LOCATION" erforderlich das GPS. Ist es möglich zu verhindern, dass der GoogleMap versucht, den Standort vom GPS zu bekommen?Google Maps API Android v2 - Berechtigung "ACCESS_FINE_LOCATION" erforderlich mit aktivierter My-Location-Ebene

Wenn ich die Erlaubnis „ACCESS_FINE_LOCATION“ in der Manifest-Datei zu entfernen, sobald ich versuche, um die Karte anzuzeigen, die App stürzt mit dem folgenden Fehler:

E/AndroidRuntime(28578): FATAL EXCEPTION: main 
E/AndroidRuntime(28578): java.lang.SecurityException: Client must have ACCESS_FINE_LOCATION permission to request PRIORITY_HIGH_ACCURACY locations. 
E/AndroidRuntime(28578): at android.os.Parcel.readException(Parcel.java:1425) 
E/AndroidRuntime(28578): at android.os.Parcel.readException(Parcel.java:1379) 
E/AndroidRuntime(28578): at bbj.a(SourceFile:424) 
E/AndroidRuntime(28578): at bbn.a(SourceFile:232) 
E/AndroidRuntime(28578): at maps.al.b.j(Unknown Source) 
E/AndroidRuntime(28578): at uh.h(SourceFile:642) 
E/AndroidRuntime(28578): at un.a(SourceFile:399) 
E/AndroidRuntime(28578): at uj.a(SourceFile:158) 
E/AndroidRuntime(28578): at ui.handleMessage(SourceFile:111) 
E/AndroidRuntime(28578): at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime(28578): at android.os.Looper.loop(Looper.java:137) 
E/AndroidRuntime(28578): at android.app.ActivityThread.main(ActivityThread.java:5041) 
E/AndroidRuntime(28578): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(28578): at java.lang.reflect.Method.invoke(Method.java:511) 
E/AndroidRuntime(28578): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
E/AndroidRuntime(28578): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
E/AndroidRuntime(28578): at dalvik.system.NativeStart.main(Native Method) 

Antwort

4

können Sie das LocationSource Muster verwenden zu liefern Ihre eigenen Standorte, die von was auch immer kommen könnten. LocationSource ist eine Schnittstelle, die Sie für ein Objekt implementieren, das Standortdaten bereitstellen kann. Sie registrieren dies mit setLocationSource() auf der GoogleMap. Sie implementieren activate() und deactivate() Methoden auf Ihrem LocationSource, die aufgerufen werden, um Sie wissen zu lassen, wann Sie anfangen sollten, über Standorte zu schieben. Wenn Sie die Position behoben haben, rufen Sie onLocationChanged() auf einem gelieferten OnLocationChangedListener.

This sample project demonstriert die Verwendung von LocationSource.

+0

Vielen Dank für Ihre schnelle Antwort! – Donkey

+0

Jetzt empfiehlt Google, GoogleApiClient zu verwenden, um mit Standorten umzugehen. Hier habe ich eine offene Frage mit einer Bounty zu vergeben: http://stackoverflow.com/questions/28108326/android-google-maps-location-with-low-battery-usage –

3

Is it possible to prevent the GoogleMap from trying to get the location from the GPS?

Standard implmentation von LocationSource muss nicht unbedingt GPS verwenden, um genaue Positionen zurückzukehren. Diese

If I remove the permission "ACCESS_FINE_LOCATION" in the Manifest file, as soon as I try to display the map, the app crashes

ist, da die Standardimplementierung verwendet LocationClient mit LocationRequest.PRIORITY_HIGH_ACCURACY.

Denn jetzt können Sie nichts mehr tun, als CommonsWare Antwort folgen, aber ich ermutige Sie auch eine Feature-Anfrage auf gmaps-api-issues, zu schaffen, damit die Standardimplementierung nicht scheitern, wenn GoogleMap.setMyLocationEnabled tun, wenn Sie nur ACCESS_COARSE_LOCATION Erlaubnis beantragen, sondern schaltet auf LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY.

+0

Ok, danke für diese Präzisionen! – Donkey

+1

Problem wurde behoben: http://code.google.com/p/gmaps-api-issues/issues/detail?id=6421 – ercan

+0

Jetzt empfiehlt Google, GoogleApiClient für die Verwaltung von Standorten zu verwenden. Hier habe ich eine offene Frage mit einer Bounty zu vergeben: http://stackoverflow.com/questions/28108326/android-google-maps-location-with-low-battery-usage –

Verwandte Themen