Как правильно настроить API Карт Google и Маркеры - PullRequest
0 голосов
/ 05 июня 2019

Я недавно начал работать над приложением для Android, которое включает GPS-отслеживание положения пользователя.Для этого я просмотрел руководство Google по настройке API GoogleMaps для Android и полностью осознал (насколько мне известно) шаги, которые мне потребовались, включая правильный API_KEY и Footprint SHA1 для отладочной версии карт Google.,Включенный код отправляет запрос информации о карте в API Google и после загрузки полностью устанавливает карту и размещает маркер в Сиднее.Но это не помещает маркер.Или перенесите интерфейс карт в Сидней.Он просто показывает карту и, кажется, почему-то каждый раз центрируется вокруг западного побережья Африки.

Вот как далеко я продвинулся в коде Java Activity:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_pkw__route__content__gps);
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);
    try {
        mapFragment.getMapAsync(this);
    }
    catch(NullPointerException npe){
        npe.printStackTrace();
    }

}

@Override
public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;

    // Add a marker in Sydney, Australia, and move the camera.
    LatLng sydney = new LatLng(-34, 151);
    current = mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
    mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));


}

Фрагмент выглядит следующим образом:

    <fragment
      android:id="@+id/map"
      android:name="com.google.android.gms.maps.SupportMapFragment"
      android:layout_width="257dp"
      android:layout_height="224dp"
      android:layout_marginStart="72dp"
      android:layout_marginTop="15dp"
      android:layout_marginEnd="72dp"
      app:layout_constraintEnd_toEndOf="parent"
      app:layout_constraintHorizontal_bias="0.5"
      app:layout_constraintStart_toStartOf="parent"
      app:layout_constraintTop_toTopOf="parent"
      tools:context=".MapsActivity" />  

Я добавил ключ API в манифест в теге com.google.android.geo.API_KEY.Я не буду публиковать его здесь по понятным причинам.

Как уже говорилось, карта инициализируется правильно, но маркеры не размещаются, и вызов moveCamera также не выполняется правильно

РЕДАКТИРОВАТЬ: я думаю, что этоВопрос нуждается в некоторой предыстории, я использую карту внутри фрагмента, который интегрирован в другой вид деятельности.Причина, по которой я считаю это важным, заключается в том, что я попытался начать действие карты с намерения, и в этом случае оно полностью загрузится, разместит маркеры и будет работать в интерактивном режиме, как и должно быть.Потому что все это в методе onCreate ().Как мне сделать это без необходимости вызывать действие и останавливать другое?

1 Ответ

0 голосов
/ 06 июня 2019

Карта не загружается при вызове onMapReady(GoogleMap googleMap). Вам нужно ждать события OnMapLoadedCallback.

Вы установили OnMapLoadedCallback для карты в onMapReady(GoogleMap googleMap), установите маркер и измените масштаб карты до местоположения в этом обратном вызове.

...