मैं Google मानचित्र api v2 के लिए डिफ़ॉल्ट स्थान और ज़ूम स्तर कैसे सेट करूं?


91

जब मेरा नक्शा दिखाता है, तो यह हमेशा एक निश्चित स्थान (अफ्रीका के पास) पर शुरू होता है।

फिर, मैं मानचित्र को मेरे इच्छित स्थान पर केंद्रित करने के लिए निम्न कोड का उपयोग करता हूं।

mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(loc.getLatitude(), loc.getLongitude()), 14.0f));

मेरा सवाल यह है कि क्या मैं मानचित्र दिखाने से पहले एक डिफ़ॉल्ट स्थान और ज़ूम स्तर सेट कर सकता हूं?

क्योंकि मैं नहीं चाहता कि मेरे उपयोगकर्ता शुरुआत में एनीमेशन देखें।

धन्यवाद।


इस qustion ने मदद की .... भले ही स्थान को सक्षम न किया गया हो ... animateCamera africa में कहीं ओर इंगित करता है ... wiered! ... moveCameraइसके लिए सबसे अच्छा उपाय है
देवराठ २०'१५

3
हाहाहाहा ....... + 1 इस सवाल के लिए, आपने मेरा दिल निकाल दिया। : D ... "यह हमेशा एक निश्चित स्थान पर (अफ्रीका के पास) शुरू होता है" ........ rofll ..... धन्यवाद भले ही।
आकाश।

2
@ akash89 यह उम्मीद के मुताबिक लैटीन (0.0,0.0) से शुरू होता है: google.com/maps/@0,0,5z मुझे यकीन नहीं है कि क्या आप फर्श पर सचमुच हंसते हुए रोल करते हैं (यदि मैं गलत नहीं हूँ), लेकिन मुझे खुशी है कि आप खुश हैं :)
नवदीप वफेई

जवाबों:


175

आप एनीमेशन के बिना सीधे ज़ूम करने के लिए इसका उपयोग कर सकते हैं:

map.moveCamera( CameraUpdateFactory.newLatLngZoom(new LatLng(xxxx,xxxx) , 14.0f) );

धन्यवाद, यह वही है जो मुझे चाहिए
:)

मेरे पास न्यूनतम अक्षांश / देशांतर और अधिकतम अक्षांश / देशांतर है तो कैसे सेट करें ???
प्रतीक बुटानी

आप इसके लिए नया प्रश्न जोड़ सकते हैं ताकि मैं आपके लिए पूरा उत्तर पोस्ट कर सकूं, लेकिन संक्षेप में आपको सीमा बनाने और उस का उपयोग करने के लिए LatLngBounds.Builder का उपयोग करना होगा।
मोह सक्खीज

1
@ सुरक्षा मेरी समस्या यह है कि मैं जीपीएस को हड़पने के लिए इंतजार कर रहा हूं MyLocationताकि मैं उपयोगकर्ता के स्थान पर मानचित्र को स्थानांतरित कर सकूं और ज़ूम कर सकूं । चूंकि मानचित्र एक्सएमएल में आरंभीकृत किया गया है, इसलिए मैं यह पता नहीं लगा सकता कि कूद को कैसे रखा जाए। आदर्श रूप से, मैं मानचित्र को तब तक छिपाऊंगा जब तक कि MyLocationवह नहीं मिल जाता है।
theblang

जब मैंने मानचित्र रखा तो इसने मुझे एक त्रुटि दी और मुझे एक चर 'मानचित्र' बनाने के लिए कहा। क्या यह आयात करना संभव है या कुछ और?
हनजावा नोकी

86

यहाँ प्रलेखन पर एक नज़र डालें:

https://developers.google.com/maps/documentation/android-api/map#configure_initial_state

यह करने का तरीका थोड़ा अलग है कि आप XML के माध्यम से मानचित्र जोड़ रहे हैं या प्रोग्रामेटिक रूप से। यदि आप XML का उपयोग कर रहे हैं, तो आप इसे निम्नानुसार कर सकते हैं:

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:map="http://schemas.android.com/apk/res-auto"
  android:id="@+id/map"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  class="com.google.android.gms.maps.SupportMapFragment"
  map:cameraBearing="112.5"
  map:cameraTargetLat="-33.796923"
  map:cameraTargetLng="150.922433"
  map:cameraTilt="30"
  map:cameraZoom="13"/>

यदि आप इसे प्रोग्रामेटिक रूप से कर रहे हैं, तो आप निम्न कार्य कर सकते हैं:

CameraPosition cameraPosition = new CameraPosition.Builder()
    .target(new LatLng(-33, 150))
    .zoom(13)
    .build();
MapFragment.newInstance(new GoogleMapOptions()
    .camera(camera));

1
अच्छा उत्तर। वास्तव में, यह इस प्रश्न के लिए अधिक उपयुक्त है।
माइटीसल जूल

2
xml में मुझे एकमुश्त त्रुटि मिलीUnexpected namespace prefix "map" found for tag fragment
मुहम्मद बाबर

यदि xmlns के साथ भी: मैप = "स्कीमा.संद्रोइड.com/apk/res-auto" में अभी भी वही त्रुटि है। इस xmlns को जोड़ने का प्रयास करें: उपकरण = " स्कीमास.एंड्रॉयड.com / tools " और "टूल:" का उपयोग "मैप:" के बजाय करें
गिलाइम इलिच टचकोवस्की

सभी विकल्पों के साथ प्रलेखन के लिए लिंक: Developers.google.com/maps/documentation/android-sdk/…
अल्बर्ट विला कैल्वो

लेआउट विशेषताओं के लिए देख रहा था, पूरी तरह से काम करते हैं। साभार
अभिषेक गर्ग

5

बस अगर आप Google Mapकिसी भी प्रारंभिक Locationप्रोग्राम में लोड करना चाहते हैं तो आप इस कोड का उपयोग कर सकते हैं,

FragmentManager fm = getFragmentManager(); // getChildFragmentManager inside fragments.
CameraPosition cp = new CameraPosition.Builder()
                    .target(initialLatLng) // your initial co-ordinates here. like, LatLng initialLatLng
                    .zoom(zoom_level)
                    .build();
SupportMapFragment mapFragment = SupportMapFragment.newInstance(new GoogleMapOptions().camera(cp));
fm.beginTransaction().replace(R.id.rl_map, mapFragment).commit();

के लिए इस टुकड़े को जोड़ें layout

<RelativeLayout
       android:id="@+id/rl_map"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent" />

यह GoogleMapविशेष रूप से Locationसीधे यानी आरंभिक लोड पर लोड होगा ।


3

मैंने एक हैंडल बनाया SupportMapFragmentऔर इसका उपयोग visibilityकरने के लिए सेट किया । फिर, कॉलबैक में कि मेरी कक्षा लागू होती है, मैं जांचता हूं कि क्या सच है और क्या सेट करें । यह आपको उस कूद से छुटकारा दिलाता है जिसे आप लोड पर देखते हैं जबकि आपको गतिशील रूप से शुरुआती स्थिति को शुरू करने की अनुमति देता है। मेरे मामले में मैं उपयोगकर्ता के स्थान के आसपास कैमरा केंद्रित कर रहा हूं, इसलिए इसे तुरंत बुलाया जाता है । View.INVISIBLESupportMapFragment.getView().setVisibility()onLocationChangedINVISIBLEVISIBLEonLocationChangedsetMyLocationEnabled(true)

आपकी आवश्यकताएं अलग-अलग हो सकती हैं, लेकिन जिस तरह से आपको केवल दृश्यता सेट करने की आवश्यकता है INVISIBLEऔर फिर VISIBLEआपके उपयुक्त डेटा लोड होने के बाद सेट करने के लिए एक अच्छी जगह मिल सकती है ।


2

आप स्थिर लेट लोंग का उपयोग करके सीधे कैमरायूपैड का उपयोग कर सकते हैं

 LatLong latlong = new LatLong(lat, long);
 CameraUpdate cameraPosition = CameraUpdateFactory.newLatLngZoom(latLong, 15);
                mGoogleMap.moveCamera(cameraPosition);
                mGoogleMap.animateCamera(cameraPosition);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.