আপনার CameraUpdate
সমস্ত প্রোগ্রামিক মানচিত্রের চলনগুলি করতে (সম্ভবত) ক্লাসটি ব্যবহার করা উচিত ।
এটি করার জন্য, প্রথমে এর মতো সমস্ত চিহ্নিতকারীগুলির সীমা গণনা করুন:
LatLngBounds.Builder builder = new LatLngBounds.Builder();
for (Marker marker : markers) {
builder.include(marker.getPosition());
}
LatLngBounds bounds = builder.build();
তারপরে কারখানাটি ব্যবহার করে একটি চলাফেরার বিবরণ অবজেক্টটি পান CameraUpdateFactory
:
int padding = 0; // offset from edges of the map in pixels
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, padding);
শেষ পর্যন্ত মানচিত্রটি সরান:
googleMap.moveCamera(cu);
অথবা আপনি যদি একটি অ্যানিমেশন চান:
googleMap.animateCamera(cu);
এখানেই শেষ :)
ব্যাখ্যা ation
প্রায় সমস্ত চলন পদ্ধতিতে Map
বিন্যাস প্রক্রিয়াটি পাস করার জন্য অবজেক্টটির প্রয়োজন হয় । আপনি নির্মাণটি ব্যবহার করে এটি হওয়ার জন্য অপেক্ষা করতে পারেন addOnGlobalLayoutListener
। এই উত্তরের মন্তব্যে এবং অবশিষ্ট উত্তরের বিশদগুলি পাওয়া যাবে। আপনি এখানে ব্যবহার করে মানচিত্রের সীমা নির্ধারণের জন্যaddOnGlobalLayoutListener
একটি সম্পূর্ণ কোডও সন্ধান করতে পারেন ।
ব্যাখ্যা ২
একটি মন্তব্যে উল্লেখ করা হয়েছে যে কেবলমাত্র একটি চিহ্নিতকারীর জন্য এই পদ্ধতিটি ব্যবহার করে মানচিত্র জুমের ফলাফল "উদ্ভট" জুম স্তরে সেট (যা আমি বিশ্বাস করি যে প্রদত্ত অবস্থানের জন্য সর্বাধিক জুম স্তর উপলব্ধ)। আমি মনে করি এটি প্রত্যাশিত কারণ:
LatLngBounds bounds
উদাহরণ হিসেবে বলা যায় থাকবে northeast
সম্পত্তিতে সমান southwest
, যার মানে হল পৃথিবীর এই দ্বারা আচ্ছাদিত এলাকার অংশ bounds
ঠিক শূন্য। (এটি যৌক্তিক যেহেতু একক চিহ্নকারীর কোনও এলাকা নেই))
- পাশ দিয়ে
bounds
যাওয়ার CameraUpdateFactory.newLatLngBounds
আপনি মূলত এই ধরনের একটি জুম স্তরের যে একটি হিসাব অনুরোধ bounds
(শূন্য এলাকা হচ্ছে) পুরো মানচিত্র দৃশ্য বহন করবে।
- আপনি কাগজের টুকরোয় এই গণনাটি সম্পাদন করতে পারবেন। তাত্ত্বিক জুম স্তরটির উত্তরটি হ'ল + ∞ (ধনাত্মক অনন্ত)। অনুশীলনে
Map
বস্তুটি এই মানটিকে সমর্থন করে না তাই এটি নির্দিষ্ট অবস্থানের জন্য অনুমোদিত আরও যুক্তিসঙ্গত সর্বোচ্চ স্তরে চাপ দেওয়া হয়।
এটি রাখার আরেকটি উপায়: একক অবস্থানেরMap
জন্য কী জুম স্তরটি বেছে নেওয়া উচিত তা কীভাবে আপত্তি করতে পারে ? হতে পারে সর্বোত্তম মান 20 হওয়া উচিত (যদি এটি কোনও নির্দিষ্ট ঠিকানা উপস্থাপন করে)। অথবা হতে পারে 11 (যদি এটি কোনও শহরের প্রতিনিধিত্ব করে)। অথবা সম্ভবত 6 (যদি এটি একটি দেশের প্রতিনিধিত্ব করে)। এপিআই তেমন স্মার্ট নয় এবং সিদ্ধান্তটি আপনার হাতে।
সুতরাং, আপনার markers
কেবলমাত্র একটি অবস্থান রয়েছে কিনা তা খতিয়ে দেখা উচিত এবং যদি থাকে তবে এর মধ্যে একটি ব্যবহার করুন:
CameraUpdate cu = CameraUpdateFactory.newLatLng(marker.getPosition())
- চিহ্নিতকারী অবস্থানে যান, বর্তমান জুম স্তর অক্ষত রেখে দিন।
CameraUpdate cu = CameraUpdateFactory.newLatLngZoom(marker.getPosition(), 12F)
- চিহ্নিতকারী অবস্থানে যান, জুম স্তর নির্বিচারে নির্বাচিত মান 12 সেট করুন।