Ошибка при работе с google maps

586
26 ноября 2016, 19:22

Пытаюсь реализовать карту в своей активити, но при переходе из категории в активити карта не загружается:

Класс MapActivity

public class MapActivity extends AppCompatActivity implements OnMapReadyCallback {
    GoogleMap googleMap;
    private static final double TARGET_LATITUDE = 17.893366;
    private static final double TARGET_LONGITUDE = 19.511868;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_map);
        createMapView();
    }
    private void createMapView() {
//        MapsInitializer.initialize(context);
        try {
            if (null == googleMap) {
                ((MapFragment) getFragmentManager().findFragmentById(
                        R.id.mapView)).getMapAsync(this);
                if (null == googleMap) {
                    Toast.makeText(getApplicationContext(),
                            "Error creating map", Toast.LENGTH_SHORT).show();
                }
            }
        } catch (NullPointerException exception) {
            Log.e("mapApp", exception.toString());
        }
    }
    private void addMarker() {
        double lat = TARGET_LATITUDE;
        double lng = TARGET_LONGITUDE;
        CameraPosition cameraPosition = new CameraPosition.Builder()
                .target(new LatLng(lat, lng))
                .zoom(15)
                .build();
        CameraUpdate cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition);
        googleMap.animateCamera(cameraUpdate);
        if (null != googleMap) {
            googleMap.addMarker(new MarkerOptions()
                    .position(new LatLng(lat, lng))
                    .title("Mark")
                    .draggable(false)
            );
        }
    }
    @Override
    public void onMapReady(GoogleMap googleMap) {
        this.googleMap = googleMap;
        addMarker();
    }
}

До этого была ошибка в самом коде,

Cannot resolve method getMap

В участке кода:

try {
    if(null == googleMap){
        googleMap = ((MapFragment) getFragmentManager().findFragmentById(
                R.id.mapView)).getMap();

Но я решил заменить getMap на getMapAsync, а также имплементировать классу OnMapReadyCallback. Возможно в этом причина ошибок.

Код layout активити:

<?xml version="1.0" encoding="utf-8"?>

<fragment
    android:id="@+id/mapView"
    android:name="com.google.android.gms.maps.MapFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

Answer 1

Попробуйте следующим образом обозначить Вашу карту с маркером:

Код layout:

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    android:name="com.google.android.gms.maps.MapFragment"
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

В Вашем методе createMapView оставить пока так:

    private void createMapView() {
    MapFragment mapFragment = (MapFragment) getFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
}

Ну и в методе onMapReady:

@Override
public void onMapReady(GoogleMap map) {
    map.addMarker(new MarkerOptions()
            .position(new LatLng(0, 0))
            .title("Marker"));
}

Перед тем как имплементируете:

public class MapActivity extends FragmentActivity implements OnMapReadyCallback 

А также вот вам ссылка в помощь, надеюсь поможет.

Answer 2

Нужно вызывать addMarker() в методе onMapReady. onMapReady - это метод, который вызывается когда карта готова к использованию. В нем нужно делать начальные настройки, и отрисовку маркеров сделайте в нем. Еще вызовите обязательно в методе onCreate метод getMapAsync(this);

READ ALSO
Не могу авторизоваться на сайте

Не могу авторизоваться на сайте

Пытаюсь зайти на сайт с помощью JSOUP через эту страницу

1053
Что означает данная ошибка: loadSystemProperties persistDebugEvent: false roDebugEvent: false?

Что означает данная ошибка: loadSystemProperties persistDebugEvent: false roDebugEvent: false?

Подскажите,отправляю на сервер текст + файлФайл - фото

318
Потеря данных при изменении ориентации Fragment

Потеря данных при изменении ориентации Fragment

Здравствуйте! я начинающий прогер и не могу разобраться помогите пожалуйстаЕсть NavigationView и несколько фрагмент страничек

304