2015-05-18 6 views
5

को स्थानांतरित किए बिना मैं GMSMapView पैडिंग को कैसे बदल सकता हूं, मैं किसी मानचित्र के स्थान को बदलने के बिना बिना GMSMapView के पैडिंग को बदलने में सक्षम होना चाहता हूं। अभी, Google मानचित्र आईओएस एसडीके नक्शा स्थान बदलता है ताकि पैडिंग लागू होने के बाद केंद्र में एक ही बिंदु हो। यह एंड्रॉइड एसडीके कैसे काम करता है उससे अलग है, जो सिर्फ मानचित्र को छोड़ देता है।मैप

मुझे इसके लिए थोड़ा सा काम मिल गया है, लेकिन यह लगातार काम नहीं करता है। मैं गणना कर सकते हैं कि क्या नया केंद्र स्थान होना चाहिए और नक्शा कैमरा अद्यतन जब मैं निम्नलिखित के साथ गद्दी को बदलने ...

UIEdgeInsets oldPadding = self.mapCtrl.map.padding; 
UIEdgeInsets newPadding = UIEdgeInsetsMake(top, left, bottom, right); 

float deltaX = ((newPadding.right - newPadding.left)/2 - (oldPadding.right-oldPadding.left)/2); 
float deltaY = ((newPadding.top - newPadding.bottom)/2 - (oldPadding.top-oldPadding.bottom)/2); 

GMSCameraUpdate *updatedCamera = [GMSCameraUpdate scrollByX:deltaX Y:deltaY]; 

[self.mapCtrl.map setPadding:newPadding]; 
[self.mapCtrl.map moveCamera:updatedCamera]; 

लेकिन मैं कहेंगे यह केवल 50% काम करता है। अन्य 50% नक्शा नए पैडिंग स्थान पर जाता है और फिर वापस जहां मैं चाहता हूं।

मुझे इसके लिए दो संभावित समाधान मिलते हैं ... ए) पैडिंग को एक अलग तरीके से बदलें ताकि यह मानचित्र को स्थानांतरित न करे, या बी) उपरोक्त कोड को किसी भी तरह से रोकने के लिए एक तरीका समझें या नक्शा आंदोलनों को समूहीकृत करना ताकि दोनों कॉल केवल एक बार में हो जाएं। लेकिन मैं यह नहीं समझ सकता कि उन दो चीजों में से किसी एक को कैसे बनाना है।

उत्तर

0

सुनिश्चित करें कि आपके पास ऊपर और नीचे एक ही पैडिंग है, इसलिए सब कुछ केंद्रित रहता है।