2013-09-06 6 views
5

मैं SherlockFragmentActivity में com.google.android.gms.maps.GoogleMap का उपयोग कर रहा हूं।दो LatLong मानों के लिए Google मानचित्र के लिए ज़ूम स्तर की गणना करें

  <fragment 
       android:id="@+id/map" 
       android:name="com.google.android.gms.maps.SupportMapFragment" 
       android:layout_width="fill_parent" 
       android:layout_height="150dip" /> 

int zoomLevel =:

XML कोड है? // मैं कैसे एंड्रॉयड मानचित्र v3 के रूप में दो अलग अलग LatLong मूल्यों के लिए ज़ूम स्तर की गणना कर सकते ज़ूम स्तर पूर्णांक

map.setZoom(zoomLevel); 

के रूप में मैं शुरू की है और गंतव्य मान com.google.android.gms.maps.model.LatLng रूप

LatLng शुरू करते हैं, अंत में बताने के लिए की जरूरत है;

मैं की तरह GoogleLocation.addPolyLineOnGMap(mMap, startPoint, endPoint, startMarker, endMarker)

मेरे समस्या एक pligon द्वारा जोड़ा जा रहा है कि कैसे मैं गूगल मानचित्र के लिए ज़ूम स्तर की गणना तो यह मानचित्र पर उचित रूप से दोनों मार्कर दिखा सकते हैं कर सकते हैं।

+1

Android के लिए Google मानचित्र में एक V2 अब, नहीं वी 3 अप करने के लिए (वी 3 जावास्क्रिप्ट के लिए है)। "ज़ूम स्तर की गणना" से आपका क्या मतलब है? – Emmanuel

+0

कृपया उचित अंग्रेजी का उपयोग करें और इस मुद्दे के बारे में विशिष्ट रहें – Anobik

+0

मेरा प्रश्न अपडेट करें। –

उत्तर

14

लैट्लिंगबाउंड्स का उपयोग करें। बिल्डर इसमें सभी सीमाएं जोड़ें और इसे बनाएं, फिर कैमरा अपडेटडेट ऑब्जेक्ट बनाएं और पैडिंग के साथ अपडेटफैक्टरी में सीमाएं पास करें। मानचित्र कैमरा एनिमेट करने के लिए इस CameraUpdate ऑब्जेक्ट का उपयोग करें।

LatLngBounds.Builder builder = new LatLngBounds.Builder(); 
     for (Marker m : markers) { 
      builder.include(m.getPosition()); 
     } 
     LatLngBounds bounds = builder.build(); 
     int padding = ((width * 10)/100); // offset from edges of the map 
              // in pixels 
     CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, 
       padding); 
     mMap.animateCamera(cu); 
2

मेरे लिए, मैं बहुत का उपयोग कर LatLngBounds.Builder कार्य नहीं करेगा और अनुकूल नहीं GoogleMapOptions द्वारा प्रारंभिक मानचित्र सेटअप के लिए जूम की गणना करनी है,। इस तरह मैं एक शहर के उत्तर पूर्व और दक्षिण-पश्चिम के आधार पर ज़ूम गणना निर्देशांक

यह here और this answer संदर्भित है, तो आप बस कोड अपने सहायक वर्ग के लिए नीचे रख सकते हैं:

final static int GLOBE_WIDTH = 256; // a constant in Google's map projection 
final static int ZOOM_MAX = 21; 

public static int getBoundsZoomLevel(LatLng northeast,LatLng southwest, 
            int width, int height) { 
    double latFraction = (latRad(northeast.latitude) - latRad(southwest.latitude))/Math.PI; 
    double lngDiff = northeast.longitude - southwest.longitude; 
    double lngFraction = ((lngDiff < 0) ? (lngDiff + 360) : lngDiff)/360; 
    double latZoom = zoom(height, GLOBE_WIDTH, latFraction); 
    double lngZoom = zoom(width, GLOBE_WIDTH, lngFraction); 
    double zoom = Math.min(Math.min(latZoom, lngZoom),ZOOM_MAX); 
    return (int)(zoom); 
} 
private static double latRad(double lat) { 
    double sin = Math.sin(lat * Math.PI/180); 
    double radX2 = Math.log((1 + sin)/(1 - sin))/2; 
    return Math.max(Math.min(radX2, Math.PI), -Math.PI)/2; 
} 
private static double zoom(double mapPx, double worldPx, double fraction) { 
    final double LN2 = .693147180559945309417; 
    return (Math.log(mapPx/worldPx/fraction)/LN2); 
} 

LatLng बनाना new LatLng(lat-double, lng-double)

द्वारा बस

width और height पिक्सल में नक्शा लेआउट आकार है

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