2010-11-30 15 views
5

मैं मार्करों के बीच एक अच्छा चिकनी संक्रमण करने के लिए map.panTo() का उपयोग कर रहा हूं, जब मैं स्थानों की सूची से क्लिक करता हूं, लेकिन मुझे ज़ूम के लिए समान तरीकों को नहीं देख सकता ... मुझे लगता है कि setZoom(13, 1500) जैसे 1500 है अवधि ...एक चिकनी ज़ूम (एपीआई वी 3) के साथ एक Google मानचित्र मार्कर को कैसे केन्द्रित करें?

कोई सुराग?

उत्तर

0

अब तक ज़ूम करने का एकमात्र मूल कार्य map.setZoom है जो आपको गति को बदलने नहीं देता है।

आप कुछ इस तरह कर सकते हैं आप मार्कर का एक सेट के आधार पर ज़ूम स्तर में अपना नक्शा सेट करना चाहते हैं:

var bounds : LatLngBounds = new LatLngBounds(southwestmarker.getLatLng(), northeastmarker.getLatLng()); 
bounds.extend(someMarker.getLatLng()); 
//some more extend() here 
map.setZoom(map.getBoundsZoomLevel(bounds)); 
+0

मुझे ओना समूह को केंद्र की आवश्यकता नहीं है ... मुझे एक साधारण ज़ूम की आवश्यकता है, लेकिन सीधे ज़ूम स्तर 3 से 14 के रूप में जाने के बजाय, मैंने सोचा कि हमारे पास Google धरती ज़ूम के समान प्रकार है .. जाहिर है सही नहीं? – Francesco

+0

दाएं, मूल रूप से आपके विकल्प या तो Google के लिए एक चिकनी ज़ूम लागू करने के लिए प्रतीक्षा करते हैं, या फ़ंक्शन को ओवरराइड कर सकते हैं (यानी ओपनलेयर) – wajiw

+0

FYI wajiw का उत्तर v2 से संबंधित है। v3 के लिए, कोई नक्शा नहीं है .getBoundsZoomLevel, इसके बजाय आपको map.fitBounds (सीमाएं) करने की आवश्यकता है; जहां सीमाएं एक नई google.maps.LatLngBounds (नया google.maps.LatLng (x, y), नया google.maps.LatLng (ए, बी)) है; – skarE

0

मैंने पाया कि map.setZoom संक्रमण ज़ूम स्तर अगर चिकनी जाएगा वर्तमान ज़ूम स्तर के 2 के भीतर है।

तो यदि नक्शा 10 के ज़ूम करने के लिए सेट है, और मैं इसे 12 पर सेट करता हूं तो यह संक्रमण होगा। हालांकि अगर मैं इसे 13 पर सेट करता हूं तो यह नहीं होगा।

इसके अलावा आप एक पूर्ण संख्या में ज़ूम सेट कर सकते हैं लेकिन नक्शा टाइल्स लोड नहीं होंगे और 'क्षमा करें, हमारे पास कोई इमेजरी नहीं है'।

आप ज़ूम को चेन करने का प्रयास कर सकते हैं लेकिन मैं इन्हें आसानी से/बाहर कर देता हूं ताकि यह झटकेदार लगे।

यदि संक्रमण 2 से अधिक है और यह चिकनी होना महत्वपूर्ण है, तो आप नक्शा DOM तत्वों में से एक पर मैट्रिक्स को मैन्युअल रूप से संपादित कर सकते हैं। यह -webkit-transform: matrix(1, 0, 0, 1, -62, 71); जैसा दिखता है। 1 और चौथी संख्याओं को बदलने से स्केल प्रभावित होगा, पहला एक्स-स्केल होगा और चौथाई वाई-स्केल होगा।

मैट्रिक्स transform: matrix(xs, 0, 0, ys, xt, yt); की तरह है, जहां xs और ys स्केल हैं, इसे 2 पर सेट करना 200% में ज़ूम करेगा। यह मैट्रिक्स आंशिक मान लेता है, इसलिए आप 1.1 तक ज़ूम कर सकते हैं। फिर आप संक्रमण के अंत में map.setZoom() अपने अंतिम नंबर पर कर सकते हैं।

इस रूप में यह इच्छित उपयोग नहीं है कुछ चेतावनियां है:

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