2013-08-22 15 views
15

लोड हो रहा है, मैं एक ऐप लिख रहा हूं जो उपयोगकर्ता के बटन को दबाए जाने पर किसी क्षेत्र के आस-पास के मानचित्र के 9 स्नैपशॉट लेगा।पता लगाएं कि एंड्रॉइड v2 मानचित्र

पाश में, इस का उपयोग कर ले जाएँ और बचाने के लिए:

map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(mStartLat + (mMultiOffsetX + mWidth), mStartLng + (mMultiOffsetY + mHeight)), mZoom)); 
map.snapshot(this); 

और onSnapshotReady में:

final String fileName = Environment.getExternalStorageDirectory().getAbsolutePath() + String.format("/test_maps/map_%f_%f.png", Double.valueOf(mStartLat + (mMultiOffsetX * mWidth)), Double.valueOf(mStartLng + (mMultiOffsetY * mHeight))); 
FileOutputStream fos = new FileOutputStream(new File(fileName)); 
bmp.compress(CompressFormat.PNG, 0, fos); 

दुर्भाग्य से नक्शा लोड हो रहा है कभी कभी समाप्त हो गया जब स्नैपशॉट लिया है, तो आप के साथ अंत: Partially blurred map snapshot

तो, नक्शा दृश्य लोड होने के दौरान श्रोता को पहचानने या सेट करने का कोई तरीका है?

उत्तर

43

OnMapLoadedCallback आग नहीं करता है के बाद जब तक नक्शे पर टाइल लोड किए जाते। केवल एक बार आग लगती है, इसलिए आपको नौ स्नैपशॉट लेने के लिए इसे नौ बार कॉल करना होगा।

जब आपके पास मानचित्र का संदर्भ है तो कॉल को वापस सेट करें।

mMap.setOnMapLoadedCallback(this); 

जब onMapLoaded ईवेंट आग स्नैपशॉट लेता है। https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/GoogleMap.OnMapLoadedCallback

गुड लक

**** इस सुविधा के लिए इंतजार की इतिहास लागू किया जाना:

@Override 
public void onMapLoaded() { 
if (mMap != null) { 
    mMap.snapshot(this); 
} 
} 

अधिक जानकारी के लिए दस्तावेज़ देखें।

अपडेट: स्थिति: फिक्स्ड लेबल: निश्चित-Oct2013

टिप्पणी # 3 मुद्दा 5779 पर द्वारा schr ... @ google.com: जब नक्शा पूरी तरह से भरी हुई/ प्रदान की गई है की क्षमता में सूचना प्राप्त करना http://code.google.com/p/gmaps-api-issues/issues/detail?id=5779

Google मानचित्र एंड्रॉइड एपीआई v2 की नवीनतम रिलीज में एक नक्शा लोड किया गया कॉलबैक इंटरफ़ेस जोड़ा गया है। मुद्दा 5779 और 61,675 अभिनीत Danny117

के लिए https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/GoogleMap.OnMapLoadedCallback

हर किसी के लिए धन्यवाद **** संपादित ****

इस मुद्दे अगर स्टार करें:

अधिक जानकारी के लिए दस्तावेज़ देखें तुम इधर आओ। http://code.google.com/p/android/issues/detail?id=61675 आपके स्टार क्लिक इस मुद्दे पर जाने के लिए Google को प्रेरित करेंगे।

मानचित्र अद्यतन 13 Google play सेवाओं के साथ समस्या का कारण बनता है ताकि आप अभी तक नए OnMapLoadedCallback का उपयोग नहीं कर सकें। आप इसके खिलाफ संकलित कर सकते हैं लेकिन नक्शा एपीआई लॉग आउट Google Play सेवाओं में एक त्रुटि संदेश उत्पन्न करता है।4030500 आवश्यक है लेकिन पाया 3266130

* संपादित करें * बिल्कुल नया OnMapLoadedCallback

अपडेट: स्थिति: फिक्स्ड लेबल: निश्चित-Oct2013

टिप्पणी मुद्दा 5779 पर # 3 द्वारा schr ... @ google.com: नक्शा पूरी तरह से लोड/प्रस्तुत होने पर अधिसूचित होने की क्षमता http://code.google.com/p/gmaps-api-issues/issues/detail?id=5779

नवीनतम रिलीज में एक नक्शा लोड किया गया कॉलबैक इंटरफ़ेस जोड़ा गया है Google मानचित्र एंड्रॉइड एपीआई v2 से।

अधिक जानकारी के लिए दस्तावेज़ देखें: मुद्दा 5779. Danny117 अभिनय के लिए https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/GoogleMap.OnMapLoadedCallback

हर किसी के लिए धन्यवाद

**** निम्नलिखित बहिष्कृत है *****

की तरह लग रहा है अपने अद्यतन समाधान के लिए एक प्रतीक्षा। मैंने आपके लिए स्टार पर क्लिक किया क्योंकि मैं इस सुविधा पर अपने स्वयं के एपीआई वी 2 मानचित्र में काम करने जा रहा था।

संपादित करें *** यह नक्शा प्रदान किए जाने के लिए प्रस्तावित नया कॉलबैक है। जो भी लोग देखते हैं वे लिंक का पालन करें और इस मुद्दे को तारांकित करें। http://code.google.com/p/gmaps-api-issues/issues/detail?id=5779

*** पिछला स्नैपशॉप कॉलबैक नहीं बदला जाएगा। जो भी लोग देखते हैं वे लिंक का पालन करें और इस मुद्दे को तारांकित करें। http://code.google.com/p/gmaps-api-issues/issues/detail?id=5712

https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/GoogleMap.SnapshotReadyCallback

1

ViewStub कक्षा का उपयोग करके अपने मानचित्र की आलसी लोडिंग में आपकी सहायता के लिए प्रयास करें। आप जब नक्शा इस कोड का उपयोग भरी हुई है का पता लगाने कर सकते हैं:

public void onShowMap(View v) { 
    // where you put the MapView layout in ViewStub view 
    ViewStub.setVisibility(View.VISIBLE); 
} 
4

के रूप में मैं इस सवाल को देखा अभी भी हल नहीं किया गया है। पता नहीं क्यों, लेकिन जब मेरे लिए मानचित्र लोड हो गया है, तो OnCameraChangeListener को बुलाया जाता है। तो मैप लोड होने के दौरान यह पता लगाने के लिए मैं इस तरह का उपयोग करता हूं।

googleMap.setOnCameraChangeListener(new OnCameraChangeListener() { 
     @Override 
     public void onCameraChange(CameraPosition arg0) { 
      map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(
        mStartLat + (mMultiOffsetX + mWidth), mStartLng 
          + (mMultiOffsetY + mHeight)), mZoom)); 
      map.snapshot(this); 
     } 
    }); 
+0

जब आप कैमरे को स्थानांतरित करते हैं, तो नक्शा पूरी तरह से प्रस्तुत नहीं होने पर यह विधि कॉलेंड होती है। –

+0

बहिष्कृत विधि: @ डेपरेटेड सार्वजनिक अंतिम शून्य सेटऑन कैमेरा चेंजलिस्टर (अंतिम GoogleMap.OnCameraChangeListener var1) – JRichardsz

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