Saat peta saya muncul, itu selalu dimulai di lokasi tetap (dekat Afrika).
Kemudian, saya menggunakan kode berikut untuk memusatkan peta ke lokasi yang saya inginkan.
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(loc.getLatitude(), loc.getLongitude()), 14.0f));
Pertanyaan saya adalah, apakah saya dapat menyetel lokasi default dan tingkat zoom sebelum peta ditampilkan?
Karena saya tidak ingin pengguna saya melihat animasi di awal.
Terima kasih.
android
google-maps
google-maps-api-3
dong221
sumber
sumber
moveCamera
adalah solusi terbaik untuk iniJawaban:
Anda dapat menggunakan ini untuk memperbesar secara langsung tanpa animasi:
map.moveCamera( CameraUpdateFactory.newLatLngZoom(new LatLng(xxxx,xxxx) , 14.0f) );
sumber
MyLocation
sehingga saya dapat memindahkan dan memperbesar peta ke lokasi pengguna. Karena peta diinisialisasi dalam XML, saya tidak tahu bagaimana mencegah terjadinya lompatan. Idealnya, saya akan menyembunyikan peta sampaiMyLocation
ditemukan kemudian menunjukkannya.Lihat dokumentasinya di sini:
https://developers.google.com/maps/documentation/android-api/map#configure_initial_state
Cara melakukannya sedikit berbeda bergantung pada apakah Anda menambahkan peta melalui XML atau secara terprogram. Jika Anda menggunakan XML, Anda dapat melakukannya sebagai berikut:
<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"/>
Jika Anda melakukannya secara terprogram, Anda dapat melakukan hal berikut:
CameraPosition cameraPosition = new CameraPosition.Builder() .target(new LatLng(-33, 150)) .zoom(13) .build(); MapFragment.newInstance(new GoogleMapOptions() .camera(camera));
sumber
Unexpected namespace prefix "map" found for tag fragment
Untuk berjaga-jaga jika Anda ingin memuat
Google Map
di awal secaraLocation
terprogram maka Anda dapat menggunakan bagian kode ini,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();
Tambahkan bagian kode ini untuk
layout
<RelativeLayout android:id="@+id/rl_map" android:layout_width="fill_parent" android:layout_height="fill_parent" />
Ini akan dimuat
GoogleMap
pada khususnyaLocation
secara langsung yaitu initialLatLng.sumber
Saya membuat pegangan
SupportMapFragment
dan mengaturnyavisibility
untukView.INVISIBLE
digunakanSupportMapFragment.getView().setVisibility()
. Kemudian, dalamonLocationChanged
callback yang diimplementasikan oleh kelas saya, saya memeriksa apakahINVISIBLE
dan menyetel keVISIBLE
jika benar. Ini menghilangkan lompatan yang Anda lihat saat memuat sambil memungkinkan Anda untuk menginisialisasi posisi awal secara dinamis. Dalam kasus saya, saya memusatkan kamera di sekitar lokasi pengguna, jadionLocationChanged
dipanggil segera karenasetMyLocationEnabled(true)
.Persyaratan Anda mungkin berbeda, tetapi bagaimanapun juga, Anda hanya perlu mengatur visibilitas
INVISIBLE
dan kemudian menemukan tempat yang baik untuk mengaturVISIBLE
setelah data yang sesuai telah dimuat.sumber
Anda dapat menggunakan CameraUpdate langsung menggunakan latlong statis
LatLong latlong = new LatLong(lat, long); CameraUpdate cameraPosition = CameraUpdateFactory.newLatLngZoom(latLong, 15); mGoogleMap.moveCamera(cameraPosition); mGoogleMap.animateCamera(cameraPosition);
sumber