Google harita api v2 için varsayılan konumu ve Yakınlaştırma düzeyini nasıl ayarlarım?


91

Haritam gösterildiğinde, her zaman sabit bir yerde (Afrika yakınında) başlar.

Ardından, haritayı istediğim konuma ortalamak için aşağıdaki kodu kullanıyorum.

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

Sorum şu, harita gösterilmeden önce varsayılan bir konum ve yakınlaştırma seviyesi ayarlayabilir miyim?

Çünkü kullanıcılarımın başlangıçta animasyonu görmesini istemiyorum.

Teşekkürler.


Bu soru yardımcı oldu ... Konum etkin olmasa bile ... animateCamera Afrika'da bir yeri işaret ediyor ... ... moveCamerabunun için en iyi çözüm
Devrath

3
hahahhaha ....... Bu soru için +1, kalbime çıkma teklif ettin. : D ... "her zaman sabit bir yerde (Afrika yakınında) başlar" ........ rofll ..... yine de teşekkürler.
akash89

2
@ akash89 Beklendiği gibi LatLng'den (0.0,0.0) başlıyor: google.com/maps/@0,0,5z Yerde tam anlamıyla gülmene neden olan şeyin ne olduğundan emin değilim (yanılmıyorsam) ama Mutlu olmana sevindim :)
Navid Vafaei

Yanıtlar:


175

Bunu, animasyon olmadan doğrudan yakınlaştırmak için kullanabilirsiniz:

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

Teşekkürler, tam ihtiyacım olan şey bu
:)

minimum enlem / boylam ve maksimum enlem / boylam var o zaman nasıl ayarlanır ???
Pratik Butani

bunun için yeni bir soru ekleyebilirsiniz, böylece tam cevabı sizin için gönderebilirim, ancak kısacası sınır oluşturmak ve kullanmak için LatLngBounds.Builder'ı kullanmanız gerekecek.
Moh Sakkijha

1
@Saksak Benim sorunum, MyLocationharitayı kullanıcının konumuna taşıyıp yakınlaştırabilmek için GPS'in yakalanmasını bekliyorum . Harita XML'de başlatıldığından, sıçramanın olmasını nasıl engelleyeceğimi bulamıyorum. İdeal olarak, haritayı bulunana kadar gizleyip MyLocationsonra gösterirdim.
theblang

haritayı yerleştirdiğimde bana bir hata verdi ve değişken bir 'harita' oluşturmamı söyledi. ithal etmek veya başka bir şey mümkün mü?
Hanzawa Naoki

86

Buradaki belgelere bir göz atın:

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

Bunu yapmanın yolu, haritayı XML aracılığıyla veya programlı olarak eklemenize bağlı olarak biraz farklıdır. XML kullanıyorsanız, aşağıdaki gibi yapabilirsiniz:

<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"/>

Programlı olarak yapıyorsanız, aşağıdakileri yapabilirsiniz:

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

1
İyi cevap. Aslında bu soru bu soru için daha uygun.
MightySeal

2
Unexpected namespace prefix "map" found for tag fragment
xml'de

Xmlns: map = "schemas.android.com/apk/res-auto" ile bile aynı hatayı görüyorsunuz. Bu xmlns: tools = " schemas.android.com/tools " eklemeyi deneyin ve "map:" yerine "tools:" kullanın
Guillaume Ilitch Tchaïkovsky

Tüm seçenekleri içeren belgelere bağlantı verin: developer.google.com/maps/documentation/android-sdk/…
Albert Vila Calvo

düzen niteliklerini arıyordu, mükemmel çalış teşekkürler
Abhishek Garg

5

Google MapBaşlangıçta herhangi bir Locationprogramlı olarak yüklemek istemeniz durumunda , bu kod parçasını kullanabilirsiniz,

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();

İçin bu kod parçasını ekleyin layout

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

Bu GoogleMap, özellikle Locationdoğrudan, yani initialLatLng'de yüklenecektir.


3

Ben bir tanıtıcı oluşturulur SupportMapFragmentve amaçlarını set visibilityiçin View.INVISIBLEkullanan SupportMapFragment.getView().setVisibility(). Daha sonra, onLocationChangedsınıfımın uyguladığı geri çağırmada, eğer doğru olup olmadığını kontrol ediyorum INVISIBLEve olarak ayarlıyorum VISIBLE. Bu, başlangıç ​​pozisyonunu dinamik olarak başlatmanıza izin verirken, yükte gördüğünüz sıçramadan kurtulur. Benim durumumda, kamerayı kullanıcının konumu etrafında ortalıyorum, bu nedenle onLocationChangedhemen aranıyorsetMyLocationEnabled(true) .

Gereksinimleriniz farklı olabilir, ancak her iki durumda da görünürlüğü ayarlamanız INVISIBLEve ardından VISIBLEuygun verileriniz yüklendikten sonra ayarlamak için iyi bir yer bulmanız gerekir.


2

doğrudan CameraUpdate'i statik latlong kullanarak kullanabilirsiniz

 LatLong latlong = new LatLong(lat, long);
 CameraUpdate cameraPosition = CameraUpdateFactory.newLatLngZoom(latLong, 15);
                mGoogleMap.moveCamera(cameraPosition);
                mGoogleMap.animateCamera(cameraPosition);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.