मेरे पास Android मानचित्र में दिखाने के लिए 458 मार्कर दिखाने का कार्य है। और प्रदर्शन संबंधी मुद्दों से बचने के लिए मैं AsyncTask
उदाहरण का उपयोग कर मानचित्र पर डेटा अपडेट करता हूं।एंड्रॉइड मानचित्र: बाध्य अपवाद से बाहर सरणी सूचकांक
यहां मैं जो करता हूं उसका एक छोटा सा परिदृश्य है।
- मैं ब्रिटेन के चारों ओर 458 स्थानों के अक्षांश/देशांतर प्राप्त करता हूं।
- मैं पाश चलाने के लिए और प्रति एंड्रॉयड ब्लॉग ट्यूटोरियल के रूप में मैं उन्हें
ItemizedOverlay
वर्ग - में जोड़ने के लिए हर 50 वीं यात्रा के बाद मैं
publishProgress
विधि कॉल नक्शे में 50 मार्कर जगह।
50 वीं यात्रा प्रवाह publishProgress
के माध्यम से onProgressUpdate
में चला जाता है और यहाँ के बाद onProgressUpdate
विधि
// MapOverLays = mapView.getOverlays();
//This line was called in asyc task's constructor
// Hello Overlay is an instance of ItemizedOverlay.
mapOverlays.add(helloOverLay);
//MapView.getController - Also called in Constructor
controller.setZoom(12);
controller.animateTo(centerPoint);
controller.setCenter(centerPoint);
इस कोड ArrayIndexOutOfBoundException
फेंकता है और logcat मेरी मॉड्यूल से वर्ग के किसी भी प्रदर्शित नहीं करता है की मेरी कोड है । अगर यह मेरी समस्या का विस्तार करता है तो यहां लॉगकैट डंप है।
12-07 11:34:48.644: ERROR/AndroidRuntime(508): java.lang.ArrayIndexOutOfBoundsException
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at com.google.android.maps.ItemizedOverlay.getIndexToDraw(ItemizedOverlay.java:211)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at com.google.android.maps.ItemizedOverlay.draw(ItemizedOverlay.java:240)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at com.google.android.maps.Overlay.draw(Overlay.java:179)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at com.google.android.maps.OverlayBundle.draw(OverlayBundle.java:42)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at com.google.android.maps.MapView.onDraw(MapView.java:476)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at android.view.View.draw(View.java:6535)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at android.view.View.draw(View.java:6538)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at android.widget.FrameLayout.draw(FrameLayout.java:352)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at android.view.View.draw(View.java:6538)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at android.widget.FrameLayout.draw(FrameLayout.java:352)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1830)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at android.view.ViewRoot.draw(ViewRoot.java:1349)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at android.view.ViewRoot.performTraversals(ViewRoot.java:1114)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at android.view.ViewRoot.handleMessage(ViewRoot.java:1633)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at android.os.Handler.dispatchMessage(Handler.java:99)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at android.os.Looper.loop(Looper.java:123)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at android.app.ActivityThread.main(ActivityThread.java:4363)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at java.lang.reflect.Method.invokeNative(Native Method)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at java.lang.reflect.Method.invoke(Method.java:521)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at dalvik.system.NativeStart.main(Native Method)
पीएस मैंने 50 के बजाय अपेक्षाकृत छोटे (10) और अपेक्षाकृत बड़े (150) पुनरावृत्तियों के साथ आवेदन का परीक्षण किया है। लेकिन एप्लिकेशन एक ही त्रुटि फेंकता है।
मुझे अस्थायी रूप से समाधान मिल गया है। प्रायः पिन जोड़ने के बजाय मैं पहले पूर्ण डेटा तैयार करता हूं और इसे 'onPostExecute()' का उपयोग करके मानचित्र में जोड़ने के बजाय http://stackoverflow.com/questions/2870743 वर्णित करता हूं लेकिन यह अभी भी लोड करने के लिए समय बचाने के लिए मेरी आवश्यकता को पूरा नहीं करता है सभी पिन हालांकि मैं उस अपवाद से छुटकारा पा सकता हूं। लेकिन किसी भी सुझाव के लिए प्रतीक्षा कर रहा है जो लोडिंग समय में सुधार करता है .... धन्यवाद वैसे भी ... :-) – Prasham