সমস্ত চিহ্নিতকারী দেখানোর জন্য অ্যান্ড্রয়েড মানচিত্র ভি 2 জুম


286

আমার মধ্যে 10 টি মার্কার রয়েছে GoogleMap। আমি যতটা সম্ভব জুম করতে এবং সমস্ত চিহ্নিতকারীকে দেখতে চাই? পূর্ববর্তী সংস্করণে এটি থেকে অর্জন করা যেতে পারে zoomToSpan()তবে v2 এ কীভাবে করা যায় তা সম্পর্কে আমার কোনও ধারণা নেই। আরও, আমি চেনাশোনাটির ব্যাসার্ধ জানি যা দৃশ্যমান হওয়া দরকার।

উত্তর:


810

আপনার 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 একটি সম্পূর্ণ কোডও সন্ধান করতে পারেন ।

ব্যাখ্যা ২

একটি মন্তব্যে উল্লেখ করা হয়েছে যে কেবলমাত্র একটি চিহ্নিতকারীর জন্য এই পদ্ধতিটি ব্যবহার করে মানচিত্র জুমের ফলাফল "উদ্ভট" জুম স্তরে সেট (যা আমি বিশ্বাস করি যে প্রদত্ত অবস্থানের জন্য সর্বাধিক জুম স্তর উপলব্ধ)। আমি মনে করি এটি প্রত্যাশিত কারণ:

  1. LatLngBounds boundsউদাহরণ হিসেবে বলা যায় থাকবে northeastসম্পত্তিতে সমান southwest, যার মানে হল পৃথিবীর এই দ্বারা আচ্ছাদিত এলাকার অংশ boundsঠিক শূন্য। (এটি যৌক্তিক যেহেতু একক চিহ্নকারীর কোনও এলাকা নেই))
  2. পাশ দিয়ে boundsযাওয়ার CameraUpdateFactory.newLatLngBoundsআপনি মূলত এই ধরনের একটি জুম স্তরের যে একটি হিসাব অনুরোধ bounds(শূন্য এলাকা হচ্ছে) পুরো মানচিত্র দৃশ্য বহন করবে।
  3. আপনি কাগজের টুকরোয় এই গণনাটি সম্পাদন করতে পারবেন। তাত্ত্বিক জুম স্তরটির উত্তরটি হ'ল + ∞ (ধনাত্মক অনন্ত)। অনুশীলনে Mapবস্তুটি এই মানটিকে সমর্থন করে না তাই এটি নির্দিষ্ট অবস্থানের জন্য অনুমোদিত আরও যুক্তিসঙ্গত সর্বোচ্চ স্তরে চাপ দেওয়া হয়।

এটি রাখার আরেকটি উপায়: একক অবস্থানেরMap জন্য কী জুম স্তরটি বেছে নেওয়া উচিত তা কীভাবে আপত্তি করতে পারে ? হতে পারে সর্বোত্তম মান 20 হওয়া উচিত (যদি এটি কোনও নির্দিষ্ট ঠিকানা উপস্থাপন করে)। অথবা হতে পারে 11 (যদি এটি কোনও শহরের প্রতিনিধিত্ব করে)। অথবা সম্ভবত 6 (যদি এটি একটি দেশের প্রতিনিধিত্ব করে)। এপিআই তেমন স্মার্ট নয় এবং সিদ্ধান্তটি আপনার হাতে।

সুতরাং, আপনার markersকেবলমাত্র একটি অবস্থান রয়েছে কিনা তা খতিয়ে দেখা উচিত এবং যদি থাকে তবে এর মধ্যে একটি ব্যবহার করুন:

  • CameraUpdate cu = CameraUpdateFactory.newLatLng(marker.getPosition()) - চিহ্নিতকারী অবস্থানে যান, বর্তমান জুম স্তর অক্ষত রেখে দিন।
  • CameraUpdate cu = CameraUpdateFactory.newLatLngZoom(marker.getPosition(), 12F) - চিহ্নিতকারী অবস্থানে যান, জুম স্তর নির্বিচারে নির্বাচিত মান 12 সেট করুন।

21
এটি লক্ষ করা উচিত যে চলনটি অনক্রিট কলগুলি থেকে ঘটতে পারে না, দৃশ্যটি তৈরি করা আবশ্যক। যথাযথ নমুনা পেতে আমার অ্যাডঅনগ্লোবাল লেআউটলিস্টনার ব্যবহার করা দরকার।
বারুচ এমনকি

6
@ বার ভাল, এটি আংশিক সত্য। সুনির্দিষ্টভাবে বলতে গেলে: মানচিত্রের অবজেক্ট তৈরির পরে কিছু আন্দোলনের পদ্ধতি সঠিকভাবে কাজ করবে না। এর কারণ হ'ল মানচিত্রের অবজেক্টটি এখনও পরিমাপ করা হয়নি কারণ এটি বিন্যাস প্রক্রিয়াটি পেরেছে না। একটি সাধারণ ফিক্স হ'ল ব্যবহার করা addOnGlobalLayoutListener()বা post()একটি উপযুক্ত সঙ্গে Runnable। ঠিক এই কারণেই কেন মার্কার স্ক্রিনের স্থানাঙ্কগুলি পাওয়া যায় না onCreate- স্ট্যাকওভারফ্লো.com/q/14429877/1820695 দেখুন তবে লেআউট হওয়ার আগেও আপনি কয়েকটি পদ্ধতি ব্যবহার করতে পারেন - যেমন। CameraUpdateFactory.newLatLngBounds()সঙ্গে 4 প্যারাম
andr

1
মনুষ্য, আপনি আমার দিনটি বাঁচান ... আসলে এটি নিজে থেকে নিজেই করার চেষ্টা করছিলেন, ম্যানুয়ালি সীমা গণনা করছিলেন, এবং মার্কার যখন থাকছিলেন তখন জুমটি ... বেশ কুৎসিত কাজ করছিল, তবে আপনার সাধারণ পদ্ধতিতে এটি একটি মোহন এর মতো কাজ করে। ধন্যবাদ
বিবু

9
গুগলম্যাপ। সেটঅনম্যাপলয়েডক্যালব্যাক (নতুন গুগলম্যাপ.অনম্যাপলয়েডক্যালব্যাক () {@ ওভাররাইড পাবলিক শূন্য অনম্যাপলয়েড () {googleMap.moveCamera (cu);}}); এটি পরিমাপের ত্রুটি এড়াতে পারবে।
রমজ

1
এটি অন্যথায় কাজ করে তবে যখন মানচিত্রে একটি একক চিহ্নিতকারী এটি কিছু উদ্ভট স্তরে জুম করে যে মানচিত্রটি ঝাপসা হয়ে যায়। কিভাবে এটি ঠিক করবেন?
উত্সব গুপ্ত

124

গুগল ম্যাপ ভি 2

নিম্নলিখিত সমাধান অ্যান্ড্রয়েড মার্শমালো 6 (এপিআই 23, এপিআই 24, এপিআই 25, এপিআই 26, এপিআই 27, এপিআই 28) এর জন্য কাজ করে। এটি জামারিনেও কাজ করে।

LatLngBounds.Builder builder = new LatLngBounds.Builder();

//the include method will calculate the min and max bound.
builder.include(marker1.getPosition());
builder.include(marker2.getPosition());
builder.include(marker3.getPosition());
builder.include(marker4.getPosition());

LatLngBounds bounds = builder.build();

int width = getResources().getDisplayMetrics().widthPixels;
int height = getResources().getDisplayMetrics().heightPixels;
int padding = (int) (width * 0.10); // offset from edges of the map 10% of screen

CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, width, height, padding);

mMap.animateCamera(cu);

7
সুদর্শন প্যাডিংয়ের জন্য, প্রস্থের পরিবর্তে উচ্চতা ব্যবহার করুন এবং এর 10% এর পরিবর্তে 20% নিন।
নুব

2
গৃহীত উত্তর কখনও কখনও অদ্ভুত জুম করার কারণ হয়। এটি একটি কবজির মতো কাজ করে। এটি একটি ভাল উত্তর।
হেসেইন বুলবুল

1
এই উত্তর গৃহীত প্রশ্নের চেয়ে আরও ভাল কাজ করে, গৃহীত উত্তরটি কিছু বিরক্ত আচরণের কারণ হয়।
হেইথাম

13

সুতরাং

যথাযথ নমুনা পেতে আমার অ্যাডঅনগ্লোবাল লেআউটলিস্টনার ব্যবহার করা দরকার

উদাহরণস্বরূপ, আপনার গুগল ম্যাপটি রিলেটিভলআউটের ভিতরে রয়েছে:

RelativeLayout mapLayout = (RelativeLayout)findViewById(R.id.map_layout);
mapLayout.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            //and write code, which you can see in answer above
        }
    });

1
উদয় টিউটোরিয়াল থেকে এখানে এসেছেন, দুর্দান্ত কাজের লোক, তারা সমস্যাটি সমাধান করার জন্য আপনার উত্তরটি ব্যবহার করেছে।
শান্তনু শ্যাডি

13

আমি onGlobalLayoutlistener ব্যবহার করতে পারিনি, সুতরাং "Map size can't be 0. Most likely, layout has not yet occured for the map view. Either wait until layout has occurred or use newLatLngBounds(LatLngBounds, int, int, int) which allows you to specify the map's dimensions."ত্রুটি রোধ করার জন্য আরও একটি সমাধান এখানে দেওয়া হয়েছে :

mMap.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() { 
@Override 
public void onMapLoaded() { 
    mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(builder.build(), 15));
 } 
});

এই এক আমার জন্য OnGlobalLayoutListener চেয়ে দীর্ঘতর পথ লাগে, তাই এটি এখনও দেখিয়েছেন মানচিত্র ডিফল্ট এলাকা / প্রথম জুম আমার চাহিদা ক্যামেরা সরানোর আগে
পর্যন্ত

আমার 2 চিহ্নিতকারী মানচিত্রের সীমানায় স্পর্শ হওয়ায় কিছু প্যাডিং কীভাবে দেওয়া যায়।
প্রতীক বুটানি

9

আমার জন্য ভাল কাজ।

এই কোড থেকে, আমি মানচিত্রের স্ক্রিনে বিশেষ জুম সহ একাধিক চিহ্নিতকারী প্রদর্শন করছি।

// ঘোষিত ভেরিয়েবল

private LatLngBounds bounds;
private LatLngBounds.Builder builder;

// অঙ্কনযোগ্য আইকন সহ একাধিক মার্কার পয়েন্ট যুক্ত করার পদ্ধতি

private void drawMarker(LatLng point, String text) {

        MarkerOptions markerOptions = new MarkerOptions();
        markerOptions.position(point).title(text).icon(BitmapDescriptorFactory.fromResource(R.drawable.icon));
        mMap.addMarker(markerOptions);
        builder.include(markerOptions.getPosition());

    }

// মানচিত্রে দৃশ্যমান একাধিক চিহ্নিতকারী যুক্ত করার জন্য

@Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;
        builder = new LatLngBounds.Builder();
    for (int i = 0; i < locationList.size(); i++) {

        drawMarker(new LatLng(Double.parseDouble(locationList.get(i).getLatitude()), Double.parseDouble(locationList.get(i).getLongitude())), locationList.get(i).getNo());

     }
     bounds = builder.build();
     CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, 0);
     mMap.animateCamera(cu);

4

দ্রষ্টব্য - এটি মূল প্রশ্নের সমাধান নয়। এটি উপরোক্ত আলোচিত একটি সাব-সমস্যাগুলির সমাধান

@ অ্যান্ড স্পষ্টকরণ 2 - এর সমাধান

সীমানায় কেবলমাত্র একটি চিহ্নিতকারী এবং এর কারণে জুম স্তরটি খুব উচ্চ স্তরে ( স্তর 21 ) সেট করা থাকে এটি সত্যই সমস্যাযুক্ত । এবং গুগল এই মুহুর্তে সর্বাধিক জুম স্তর সেট করার কোনও উপায় সরবরাহ করে না। 1 টিরও বেশি চিহ্নিতকারী থাকা অবস্থায় এটি ঘটতে পারে তবে তারা সমস্ত একে অপরের খুব কাছাকাছি থাকে। তারপরেও একই সমস্যা দেখা দেবে।

সমাধান - মনে করুন আপনি চান যে আপনার মানচিত্রটি 16 টি জুম স্তরের বেশি হবে না। তারপরে -

CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, padding);
mMap.moveCamera(cu);

আপনার জুম স্তরটি 16 স্তরের (অথবা আপনি যা চান) ছাড়িয়ে গেছে কিনা তা পরীক্ষা করুন -

float currentZoom = mMap.getCameraPosition().zoom;

এবং যদি এই স্তরটি 16 টিরও বেশি হয়, তবে এটি কেবলমাত্র যদি সেখানে খুব কম চিহ্নিতকারী থাকে বা সমস্ত চিহ্নিতকারী একে অপরের খুব কাছাকাছি থাকে তবে কেবলমাত্র জুম স্তরটি 16 এ সেট করে আপনার মানচিত্রটিকে সেই নির্দিষ্ট অবস্থানে জুম আউট করুন।

mMap.moveCamera(CameraUpdateFactory.zoomTo(16));

এইভাবে আপনার কাছে "উদ্ভট" জুম লেভেলের সমস্যা কখনওই হবে না এবং @ ইন্ডার দ্বারাও খুব ভাল ব্যাখ্যা করেছেন।


ভাল সমাধান তবে আপনি যদি ম্যাপআরেডি () এর ভিতরে "কিউ" অবজেক্টটি রেখে দেন তবে এই ক্ষেত্রে একটি দুর্ব্যবহার রয়েছে: প্রাপ্ত স্থান -> জুমটি বড় তাই এটি 16 -> তারপর ব্যবহারকারীটি জুম করে -> লোকেশনটি আবার পেয়েছে এবং ক্যামেরাটি হ'ল 16 স্তরে ফিরে যান । যখন অবস্থানটি প্রায় রিয়েল-টাইমে পাওয়া যায় তখন এটি সমস্যা হতে পারে কারণ এটি 16 স্তরে ফিরতে থাকবে
মেহের নাবিল

"এবং গুগল এই মুহুর্তে সর্বাধিক জুম স্তর নির্ধারণের জন্য কোনও উপায় সরবরাহ করে না" "- সত্য নয়: developers.google.com/android/references/com/google/android/gms/…
ব্যবহারকারী1209216

3

এটি Google এপিস ডেমো থেকে .. সহায়তা করবে help

private List<Marker> markerList = new ArrayList<>();
Marker marker = mGoogleMap.addMarker(new MarkerOptions().position(geoLatLng)
                .title(title));
markerList.add(marker);
    // Pan to see all markers in view.
    // Cannot zoom to bounds until the map has a size.
    final View mapView = getSupportFragmentManager().findFragmentById(R.id.map).getView();
    if (mapView!=null) {
        if (mapView.getViewTreeObserver().isAlive()) {
            mapView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
                @SuppressWarnings("deprecation") // We use the new method when supported
                @SuppressLint("NewApi") // We check which build version we are using.
                @Override
                public void onGlobalLayout() {
                    //Calculate the markers to get their position
                    LatLngBounds.Builder b = new LatLngBounds.Builder();
                    for (Marker m : markerList) {
                        b.include(m.getPosition());
                    }
                    // also include current location to include in the view
                    b.include(new LatLng(mLocation.getLatitude(),mLocation.getLongitude()));

                    LatLngBounds bounds = b.build();
                    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
                        mapView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
                    } else {
                        mapView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                    }
                    mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 50));
                }
            });
        }
    }

স্পষ্ট তথ্যের জন্য এই url দেখুন। https://github.com/googlemaps/android-samples/blob/master/ApiDemos/app/src/main/java/com/example/mapdemo/MarkerDemoActivity.java


1

আমার অনুরূপ সমস্যা ছিল, নিম্নলিখিত কোড ব্যবহার করে সমস্যার সমাধান হয়েছে:

CameraUpdateFactory.newLatLngBounds(bounds, 200, 200, 5) সাধারণত আমার ক্ষেত্রে অবস্থানের পার্থক্য দুটি প্রতিবেশী শহরের চেয়ে বেশি নয়।

গুগল ম্যাপে সমস্ত মার্কারকে ফিট করতে জুম করুন v2 maps


1

গুগল মানচিত্র সহ সমস্ত চিহ্নিতকারী দেখান

এই পদ্ধতিগুলিতে সমস্ত চিহ্নিতকারীকে সঞ্চয় করে এবং গুগল ম্যাপে সমস্ত চিহ্নিতকারী দেখানোর জন্য স্বয়ংক্রিয়ভাবে জুম করুন।

// Declare the Markers List.
List<MarkerOptions> markerList;
private BitmapDescriptor vnrPoint,banPoint;


public void storeAllMarkers()
{
      markerList=new ArrayList<>();
      markerList.removeAll(markerList);


      // latitude and longitude of Virudhunagar

      double latitude1=9.587209;
      double longitude1=77.951431;
   vnrPoint=BitmapDescriptorFactory.fromResource(R.drawable.location_icon_1);
      LatLng vnr = new LatLng(latitude1, longitude1);
      MarkerOptions vnrMarker = new MarkerOptions();
      vnrMarker.position(vnr);
      vnrMarker.icon(vnrPoint);
      markerList.add(vnrMarker);

      // latitude and longitude of Bengaluru

      double latitude2=12.972442;
      double longitude2=77.580643;

    banPoint=BitmapDescriptorFactory.fromResource(R.drawable.location_icon_2);

      LatLng ban = new LatLng(latitude2, longitude2);
      MarkerOptions bengalureMarker = new MarkerOptions();
      bengalureMarker.position(ban);
      bengalureMarker.icon(banPoint);
      markerList.add(bengalureMarker);

      // You can add any numbers of MarkerOptions like this.

     showAllMarkers();

 }


public void showAllMarkers()
{
    LatLngBounds.Builder builder = new LatLngBounds.Builder();

    for (MarkerOptions m : markerList) {
        builder.include(m.getPosition());
    }

    LatLngBounds bounds = builder.build();

    int width = getResources().getDisplayMetrics().widthPixels;
    int height = getResources().getDisplayMetrics().heightPixels;
    int padding = (int) (width * 0.30); 

    // Zoom and animate the google map to show all markers

    CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, width, height, padding);
    googleMap.animateCamera(cu);
}

0

কেন্দ্রের সমন্বয় পেতে ক্যামেরাপজিশনে ব্যবহার করতে "getCenterCoordinate" পদ্ধতিটি ব্যবহার করুন।

private void setUpMap() {
    mMap.setMyLocationEnabled(true);
    mMap.getUiSettings().setScrollGesturesEnabled(true);
    mMap.getUiSettings().setTiltGesturesEnabled(true);
    mMap.getUiSettings().setRotateGesturesEnabled(true);

    clientMarker = mMap.addMarker(new MarkerOptions()
            .position(new LatLng(Double.valueOf(-12.1024174), Double.valueOf(-77.0262274)))
            .icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_taxi))
    );
    clientMarker = mMap.addMarker(new MarkerOptions()
            .position(new LatLng(Double.valueOf(-12.1024637), Double.valueOf(-77.0242617)))
            .icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_location))
    );

    camPos = new CameraPosition.Builder()
            .target(getCenterCoordinate())
            .zoom(17)
            .build();
    camUpd3 = CameraUpdateFactory.newCameraPosition(camPos);
    mMap.animateCamera(camUpd3);
}


public LatLng getCenterCoordinate(){
    LatLngBounds.Builder builder = new LatLngBounds.Builder();
    builder.include(new LatLng(Double.valueOf(-12.1024174), Double.valueOf(-77.0262274)));
    builder.include(new LatLng(Double.valueOf(-12.1024637), Double.valueOf(-77.0242617)));
    LatLngBounds bounds = builder.build();
    return bounds.getCenter();
}

0

এই একই জিনিসটি করার জন্য আমার কাছে অন্য একটি উপায় রয়েছে যা পুরোপুরি কার্যকর হয়। সুতরাং পর্দায় সমস্ত চিহ্নিতকারী দেখানোর পিছনে ধারণাটির জন্য আমাদের একটি ল্যাট লম্বা এবং জুম স্তর দরকার। এখানে ফাংশনটি আপনাকে উভয়ই দেবে এবং ইনপুট হিসাবে সমস্ত মার্কারের ল্যাটলং বস্তুগুলির প্রয়োজন।

 public Pair<LatLng, Integer> getCenterWithZoomLevel(LatLng... l) {
    float max = 0;

    if (l == null || l.length == 0) {
        return null;
    }
    LatLngBounds.Builder b = new LatLngBounds.Builder();
    for (int count = 0; count < l.length; count++) {
        if (l[count] == null) {
            continue;
        }
        b.include(l[count]);
    }

    LatLng center = b.build().getCenter();

    float distance = 0;
    for (int count = 0; count < l.length; count++) {
        if (l[count] == null) {
            continue;
        }
        distance = distance(center, l[count]);
        if (distance > max) {
            max = distance;
        }
    }

    double scale = max / 1000;
    int zoom = ((int) (16 - Math.log(scale) / Math.log(2)));
    return new Pair<LatLng, Integer>(center, zoom);
}

এই ফাংশনটি আপনি পছন্দ মতো ব্যবহার করতে পারেন যা জুড়ি বস্তুটি ফেরত দেয়

জুড়ি জোড়া = getCenterWithZoomLevel (l1, l2, l3 ..); mGoogleMap.moveCamera (ক্যামেরাআপডেটফ্যাক্টরি। নতুন লাটলজজুম (পেয়ার.ফার্স্ট, পেয়ার.সেকেন্ড));

আপনি আপনার চিহ্নিতকারীদের স্ক্রিনের সীমানা থেকে দূরে রাখতে প্যাডিং ব্যবহার না করে, জুম -1 দ্বারা সামঞ্জস্য করতে পারেন।


-3
   //For adding a marker in Google map
        MarkerOptions mp = new MarkerOptions();
        mp.position(new LatLng(Double.parseDouble(latitude), Double.parseDouble(longitude)));
        mp.snippet(strAddress);
        map.addMarker(mp);

        try {

            b = new LatLngBounds.Builder();

            if (MapDetailsList.list != null && MapDetailsList.list.size() > 0) {

                for (int i = 0; i < MapDetailsList.list.size(); i++) {

                    b.include(new LatLng(Double.parseDouble(MapDetailsList.list.get(i).getLatitude()),
                            Double.parseDouble(MapDetailsList.list.get(i).getLongitude())));

                }
                LatLngBounds bounds = b.build();

                DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
                int width = displayMetrics.widthPixels;
                int height = displayMetrics.heightPixels;

                // Change the padding as per needed
                CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, width-200, height-200, 5);
                // map.setCenter(bounds.getCenter());

                map.animateCamera(cu);

            }

        } catch (Exception e) {

        }

http://i64.tinypic.com/2qjybh4.png

http://i63.tinypic.com/flzwus.png

http://i63.tinypic.com/112g5fm.png

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.