Intereting Posts
В чем разница между Eclipse «Импорт» и «Создать проект из существующего источника» для проектов Android? Подписание файла APK в CLI Cordova v-5.0 не работает Предупреждение о безопасности в libpng в моей консоли Google Play Двунаправленная операция поиска Как прокручивать вверх / вниз нижнюю панель при прокрутке RecyclerView SpeechRecognizer на Android-устройстве без Google Apps Какой поток запускает ContentProvider? Ошибка: типы строк не разрешены (в 'screenOrientation' со значением 'sensorPortait') OnUtteranceCompleted не вызван? Как я могу экстраполировать дальше по дороге? Отменить регистрацию вещательного приемника, зарегистрированного через манифест Как установить демо-приложение android api в мой телефон Android Wear и Google Fit: как заставить обновлять наборы данных между смартваром и смартфоном? Написание приложений для Android на C # (Xamarin) Как запретить некоторым пользователям обновлять приложение с Android-рынка?

Как отобразить мое местоположение на Google Maps для Android API v2

Я смотрел высоко и низко для ответа на это, и никто, ни на одном форуме, не смог помочь. Я просмотрел учебники. Руководство API говорит:

Кнопка «Мое местоположение» отображается в правом верхнем углу экрана только при включенном слое «Мое местоположение».

Поэтому я искал этот слой My Location и не смог ничего найти. Как показать свое местоположение на карте Google?

Solutions Collecting From Web of "Как отобразить мое местоположение на Google Maps для Android API v2"

В Руководстве API все неправильно (действительно, Google?). С Maps v2 вам не нужно включать слой, чтобы показать себя, есть простой вызов экземпляра GoogleMaps, который вы создали с вашей картой.

Документация Google

Фактическая документация, предоставляемая Google, дает вам ответ. Вызов

// map is a GoogleMap object map.setMyLocationEnabled(true); 

И наблюдать за магией.

Код Java:

 public class MapActivity extends FragmentActivity implements LocationListener { GoogleMap googleMap; LatLng myPosition; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_map); // Getting reference to the SupportMapFragment of activity_main.xml SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); // Getting GoogleMap object from the fragment googleMap = fm.getMap(); // Enabling MyLocation Layer of Google Map googleMap.setMyLocationEnabled(true); // Getting LocationManager object from System Service LOCATION_SERVICE LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); // Creating a criteria object to retrieve provider Criteria criteria = new Criteria(); // Getting the name of the best provider String provider = locationManager.getBestProvider(criteria, true); // Getting Current Location Location location = locationManager.getLastKnownLocation(provider); if (location != null) { // Getting latitude of the current location double latitude = location.getLatitude(); // Getting longitude of the current location double longitude = location.getLongitude(); // Creating a LatLng object for the current location LatLng latLng = new LatLng(latitude, longitude); myPosition = new LatLng(latitude, longitude); googleMap.addMarker(new MarkerOptions().position(myPosition).title("Start")); } } } 

activity_map.xml:

 <?xml version="1.0" encoding="utf-8"?> <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="fill_parent" android:layout_height="fill_parent" class="com.google.android.gms.maps.SupportMapFragment"/> 

Вы получите свое текущее местоположение в синем круге.

Чтобы показать кнопку «Мое местоположение», вы должны позвонить

 map.getUiSettings().setMyLocationButtonEnabled(true); 

На вашем объекте GoogleMap.

От android 6.0 вам нужно проверить разрешение пользователя, если вы хотите использовать GoogleMap.setMyLocationEnabled(true) вы получите Call requires permission which may be rejected by user ошибки

 if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { mMap.setMyLocationEnabled(true); } else { // Show rationale and request permission. } 

Если вы хотите прочитать больше, проверьте документы google map

Вызовите GoogleMap.setMyLocationEnabled(true) в своей Activity и добавьте этот 2-строчный код в Manifest :

 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />