मैं नए Android Google Maps API का उपयोग कर रहा हूं।moveUpera कैमराUpdateFactory.newLatLngBounds क्रैश
मैं एक ऐसी गतिविधि बनाता हूं जिसमें मैपफ्रैगमेंट शामिल है। गतिविधि onResume
में मैंने मार्कर को GoogleMap ऑब्जेक्ट में सेट किया है और फिर मानचित्र के लिए एक बाउंडिंग बॉक्स परिभाषित किया है जिसमें सभी मार्कर शामिल हैं।
LatLngBounds.Builder builder = new LatLngBounds.Builder();
while(data) {
LatLng latlng = getPosition();
builder.include(latlng);
}
CameraUpdate cameraUpdate = CameraUpdateFactory
.newLatLngBounds(builder.build(), 10);
map.moveCamera(cameraUpdate);
map.moveCamera()
के आह्वान के बाद ढेर के साथ दुर्घटना अपने आवेदन का कारण बनता है:
यह निम्न छद्म कोड उपयोग कर रहा है
Caused by: java.lang.IllegalStateException:
Map size should not be 0. Most likely, layout has not yet
at maps.am.r.b(Unknown Source)
at maps.y.q.a(Unknown Source)
at maps.y.au.a(Unknown Source)
at maps.y.ae.moveCamera(Unknown Source)
at com.google.android.gms.maps.internal.IGoogleMapDelegate$Stub
.onTransact(IGoogleMapDelegate.java:83)
at android.os.Binder.transact(Binder.java:310)
at com.google.android.gms.maps.internal.IGoogleMapDelegate$a$a
.moveCamera(Unknown Source)
at com.google.android.gms.maps.GoogleMap.moveCamera(Unknown Source)
at ShowMapActivity.drawMapMarkers(ShowMapActivity.java:91)
at ShowMapActivity.onResume(ShowMapActivity.java:58)
at android.app.Instrumentation
.callActivityOnResume(Instrumentation.java:1185)
at android.app.Activity.performResume(Activity.java:5182)
at android.app.ActivityThread
.performResumeActivity(ActivityThread.java:2732)
है - newLatLngBounds()
कारखाने विधि मैं का उपयोग करने के बजाय newLatLngZoom()
विधि तब एक ही जाल नहीं होता है।
onResume
मार्कर को GoogleMap ऑब्जेक्ट पर आकर्षित करने के लिए सबसे अच्छी जगह है या क्या मुझे मार्करों को चित्रित करना चाहिए और कहीं और कैमरा स्थिति सेट करना चाहिए?
लेकिन क्या होगा अगर नक्शा पूरे स्क्रीन ऊपर नहीं ले करता है? – theblang
मेरे मामले में मैंने अभी प्रभावी रूप से एक बड़ी स्क्रीन ग्रहण की थी, और पैडिंग की अधिक सावधानीपूर्वक गणना करने की आवश्यकता थी, इसलिए वास्तव में यह * बहुत बड़ा नहीं था। एक बहुत आसान कारण है। – rfay
क्या आप स्क्रीन आकार के आधार पर इसकी गणना कैसे कर सकते हैं? – Caipivara