2013-06-13 16 views
5

Kullanıcının konumunu Google Haritalar'da my-location layer özelliğini etkinleştirmek istiyorum, ancak bu işlevin "ACCESS_FINE_LOCATION" adresinden izin alması gerekir. GPS. GoogleMap'un GPS'den konum almayı engellemesi mümkün mü?Google Maps API Android v2 - "ACCESS_FINE_LOCATION" izni, konum bilgisi katmanım etkin

Ben en kısa haritayı aşağıdaki hata ile uygulama çöker görüntülemek için çalışırken, Manifest dosyasında izin "ACCESS_FINE_LOCATION" kaldırırsanız:

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) 

cevap

4

Sen tedarik LocationSource deseni kullanabilirsiniz her yerden gelebilecek kendi yerleriniz. LocationSource, konum verilerini sağlayabilen bazı nesneler üzerinde uygulayacağınız bir arabirimdir. Bunu, GoogleMap numaralı telefondan setLocationSource() ile kaydettirin. numaranızda activate() ve deactivate() yöntemlerini uygularsınız; bu sayede, konumları ne zaman itmeli ve durdurmalısınız. Konum düzeltmelerini aldığınız sırada, OnLocationChangedListener ürününde onLocationChanged() numaralı telefonu arayın.

This sample project, LocationSource kullanımını gösterir. LocationSource ait

+0

Hızlı cevabınız için teşekkür ederiz! – Donkey

+0

Artık Google, konumlarla ilgilenmek için GoogleApiClient uygulamasını kullanmanızı önerir. İşte ben ödül için bir ödül ile açık bir sorum var: 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?

Standart implmentation mutlaka doğru konumları dönmek için GPS kullanmak zorunda değildir. Varsayılan uygulama LocationRequest.PRIORITY_HIGH_ACCURACY ile LocationClient kullanması nedeniyle

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

budur.

Şimdilik sen CommonsWare yanıtını aşağıdaki başka bir şey yapabiliriz, ama GoogleMap.setMyLocationEnabled yaparken sadece ACCESS_COARSE_LOCATION izni talep varsayılan uygulama başarısız değildir bu yüzden de, gmaps-api-issues bir özellik isteği oluşturmak için teşvik ama geçer LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY.

+0

Tamam, bu kesinleştirmeler için teşekkürler! – Donkey

+1

Sorun açıldı: http://code.google.com/p/gmaps-api-issues/issues/detail?id=6421 – ercan

+0

Artık Google, konumlarla ilgilenmek için GoogleApiClient uygulamasını kullanmanızı önerir. İşte ödül için bir ödülle açık bir sorum var: http://stackoverflow.com/questions/28108326/android-google-maps-location-with-low-battery-usage –

İlgili konular