Я знаю, что есть много похожих вопросов, и я прочитал много из них, но никто не работал для меня. Отчасти потому, что Google Maps sdk изменился.Показать текущее местоположение на Google Maps android
Что я хочу сделать, так это показать пользователю свое текущее местоположение на картах Google.
Вот что я сделал:
Добавлены следующие зависимостей в Gradle файле:
compile 'com.google.android.gms:play-services:7.5.0'
добавлены следующие в файле манифеста:
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
....
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="@string/google_maps_key" />
The onCreateView моего фрагмент:
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mapFragment = (com.google.android.gms.maps.MapFragment)getChildFragmentManager().findFragmentById(R.id.map);
if (mapFragment == null){
fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
mapFragment = com.google.android.gms.maps.MapFragment.newInstance();
fragmentTransaction.replace(R.id.map, mapFragment).commit();
}
if (mapFragment != null){
initilizeMap();
}
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_map, container, false);
}
и initializeMap
метод:
private void initilizeMap(){
googleMap = mapFragment.getMap();
if (googleMap != null){
googleMap.getUiSettings().setAllGesturesEnabled(true);
googleMap.setMyLocationEnabled(true);
googleMap.getUiSettings().setMyLocationButtonEnabled(true);
googleMap.getUiSettings().setCompassEnabled(true);
googleMap.setOnMyLocationChangeListener(myLocationChangeListener());
}
}
и вот locationChangeListener
, который должен был дать мне текущее местоположение:
private GoogleMap.OnMyLocationChangeListener myLocationChangeListener() {
return new GoogleMap.OnMyLocationChangeListener() {
@Override
public void onMyLocationChange(Location location) {
LatLng loc = new LatLng(location.getLatitude(), location.getLongitude());
CameraPosition cameraPosition = new CameraPosition.Builder().target(loc).zoom(15.0f).build();
CameraUpdate cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition);
googleMap.moveCamera(cameraUpdate);
}
}
Что происходит, что карта появляется, но не показывает текущее местоположение , Он показывает весь мир.
Что мне не хватает или что-то не так? Заранее спасибо.
Хотя это не то, что я искал, он дал мне подсказку. Вот почему я принимаю это как ответ. [Здесь] (http://www.androidhive.info/2015/02/android-location-api-using-google-play-services/) процесс описан хорошо. Спасибо! –