2010-06-27 8 views
5

मेरे पास नक्शा सक्रियता है। यदि यह किसी उचित स्थान पर सेट किया गया है और ट्रैफ़िक देखने के लिए ज़ूम स्तर पर सेट किया गया है, तब तक इसे तब तक नहीं बनाया जाता जब तक आप मानचित्र के साथ बातचीत नहीं करते (उस पर क्लिक करें, ड्रैग इत्यादि) उस बिंदु पर यातायात दिखाता है। स्वाभाविक रूप से मैं लोड होने के बाद किसी भी उपयोगकर्ता इंटरैक्शन के बिना ट्रैफिक दिखाना चाहता हूं लेकिन मैं यह समझने में असमर्थ हूं कि इसे कैसे ट्रिगर करना है। कोई विचार?एंड्रॉइड 1.6 मैपव्यू ट्रैफिक नहीं दिखाता है जब तक कि उपयोगकर्ता मानचित्र के साथ इंटरैक्ट नहीं करता

मेरी MapActivity विरासत में मिला वर्ग से:

private MapView mapView; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.map); 
mapView = (MapView) findViewById(R.id.mapview); 
mapView.setBuiltInZoomControls(true); 
mapView.setTraffic(true); 
} 

और यहाँ है क्या R.layout.map

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/mainlayout" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <com.google.android.maps.MapView 
     android:id="@+id/mapview" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:clickable="true" 
     android:apiKey="...MY API KEY HERE..." 
    /> 
</RelativeLayout> 

उत्तर

3

postInvalidate() कॉल एक समाधान के रूप में क्या करना चाहिए की कोशिश करो के बाद फिर से ताज़ा नहीं है, देरी बार आप किस तरह की कोशिश की?

+0

आपके सुझाव पर मैंने यह एक और प्रयास दिया। मैंने mapView.postInvalidateDelayed (5000) रखा; इस गतिविधि के लिए ऑनस्टार्ट() में और देखा कि यह डीबग मोड में हिट हो गया और फिर बैठे और 30 सेकंड के लिए यातायात के लिए इंतजार कर रहे थे। ऐसा कोई प्रतीत नहीं होता था। – Brian

+0

असल में आप सही हैं। पोस्ट विलंब के बाद अविश्वसनीय वास्तव में काम करता है अगर नक्शे पूरी तरह से प्रस्तुत होने के बाद बंद हो जाता है। अगर पहले प्रतिपादन से पहले यह आग लग जाती है तो कुछ भी नहीं होता है। एक चीजी परीक्षण फिक्स मैंने अभी किया है जो पोस्ट से काम करता है पोस्टइविडिएट डेलेयड चाल नहीं करता है (क्योंकि मैंने इसे यूई थ्रेड से निकाल दिया है?) वैसे भी अगर यह काम करता है तो यह काम करता है अगर नक्शा <1000ms: में प्रस्तुत करता है टाइमर टाइमर = नया टाइमर(); timer.schedule (नया टाइमरटास्क() { @ ओवरराइड सार्वजनिक शून्य रन() {mapView.postInvalidate();} }, 1000); – Brian

0

में मैं MapView की XML attrs को खोजने की कोशिश की लेकिन मैं उन्हें नहीं मिल सका।

मेरा अनुमान है कि मानचित्र का उपयोग setTraffic(true);

एक उपयुक्त विलंब के बाद mapView.invalidate();

+0

अफसोस की बात है कि मैंने पहले से ही mapView.invalidate() की कोशिश की है; और mapView.postInvalidate() देरी के समय के साथ लेकिन ऐसा कोई प्रभाव नहीं प्रतीत होता है। – Brian

0

मैंने इस पर एक बग रिपोर्ट दायर की, संख्या 10317। मेरे शोध से, जब आप मानचित्रव्यू पर यातायात या सड़कदृश्य मोड चालू करते हैं, तो Google सर्वर से डेटा पुनर्प्राप्त करने के लिए एक थ्रेड शुरू होता है। यदि मैपवीव स्वयं खींचता है तब तक डेटा वापस नहीं आता है, तो उपयुक्त लाइनें प्रदर्शित नहीं होती हैं। उपयोगकर्ता इंटरैक्शन एक रेड्रॉ का कारण बनता है और तब तक डेटा आमतौर पर मौजूद होता है। अमान्य कॉलिंग काम नहीं करती है क्योंकि थ्रेड तब तक शुरू नहीं होता जब तक कि आपका कोड निष्पादित नहीं हो जाता (यानी, जिस कोड को मोड सेट किया जाता है)। वर्कअराउंड नक्शा दृश्य को अमान्य करने के लिए भविष्य संदेश को पोस्ट करना है, जिसके बाद डेटा (वर्तमान में) डेटा मौजूद है। फिक्स थ्रेड के लिए होगा जो डेटा पुनर्प्राप्त होने पर डेटा को पुन: उत्पन्न करने के लिए लाता है।

संबंधित मुद्दे

 संबंधित मुद्दे