Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
PhantomR
5 / 5 / 0
Регистрация: 04.02.2016
Сообщений: 74
#1

Как разместить карту на Fragment - Android

29.08.2016, 12:53. Просмотров 246. Ответов 3
Метки нет (Все метки)

Есть решенный класс для запуска карт в FragmentActivity. Как запустить в Fragment? Не могу вызвать GetSupportFragmentManager

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.FragmentActivity;
 
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
 
public class MainActivity extends FragmentActivity implements OnMapReadyCallback {
 
    private static final int REQUEST_ACCESS_FINE_LOCATION = 0;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_map);
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }
 
    @Override
    public void onMapReady(GoogleMap map) {
        map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
        LatLng address1 = new LatLng(53.908757, 27.469890);
        map.addMarker(new MarkerOptions().position(address1).title("Marker in Sydney"));
        map.animateCamera(CameraUpdateFactory.newLatLngZoom(address1, 12));
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_ACCESS_FINE_LOCATION);
            }
            return;
        }
        map.setMyLocationEnabled(true);
    }
 
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
                                           @NonNull int[] grantResults) {
        if (requestCode == REQUEST_ACCESS_FINE_LOCATION) {
            if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                startActivity(getIntent());
                finish();
            }
        }
    }
}
Добавлено через 1 час 20 минут
Вопрос решен!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.08.2016, 12:53     Как разместить карту на Fragment
Посмотрите здесь:

[Swipe, Fragment] - интерфейс как у маркета Android
Android Как позволить установку приложения на карту памяти?
Android Пересоздание Fragment при листании, как избавиться?
DialogFragment в Fragment Android
Анимация Fragment Android
Fragment Android
Fragment и ListView Android
Android Как объявить ImageButton в Fragment.java?
Android Как из сервиса запустить fragment
Android Как запустить метод Fragment из MainActivity?
Android ClassNotFoundException. android.view.fragment. как лечить?
Fragment как в нем добавить List View Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vxg
Модератор
3061 / 1863 / 196
Регистрация: 13.01.2012
Сообщений: 7,086
29.08.2016, 13:22     Как разместить карту на Fragment #2
Цитата Сообщение от PhantomR Посмотреть сообщение
Вопрос решен!
скажите идущим за вами "как"
PhantomR
5 / 5 / 0
Регистрация: 04.02.2016
Сообщений: 74
30.08.2016, 09:31  [ТС]     Как разместить карту на Fragment #3
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public class ContactsFragment extends Fragment implements OnMapReadyCallback {
    private static final int REQUEST_ACCESS_FINE_LOCATION = 0;
    private TextView number;
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_contact, container, false);
        initMaps();
        initMaps();
        return view;
    }
 
    private void initMaps() {
        ((SupportMapFragment) getChildFragmentManager().
                findFragmentById(R.id.map)).getMapAsync(this);
    }
 
    @Override
    public void onMapReady(GoogleMap map) {
        map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
        LatLng city = new LatLng(53.903752, 27.564201);
        LatLng address1 = new LatLng(53.908757, 27.469890);
        LatLng address2 = new LatLng(53.920255, 27.577232);
        LatLng address3 = new LatLng(53.878631, 27.558539);
        map.addMarker(new MarkerOptions().position(address1).title("Cafe #1"));
        map.addMarker(new MarkerOptions().position(address2).title("Cafe #2"));
        map.addMarker(new MarkerOptions().position(address3).title("Cafe #3"));
        map.animateCamera(CameraUpdateFactory.newLatLngZoom(city, 10));
        if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_ACCESS_FINE_LOCATION);
            }
            return;
        }
        map.setMyLocationEnabled(true);
    }
}
Добавлено через 20 часов 6 минут
Кстати, есть нюанс, что т.к. необходимо использовать SupportMapFragment, то нужно вызывать v4 библиотеку, что может накладывать определённые ограничения.

Добавлено через 33 секунды
Не забудьте прописать в манифесте permissions

Добавлено через 11 секунд
XML
1
2
3
4
5
6
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <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="com.google.android.providers.gsf.permission.READ_GSERVICES" />
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
30.08.2016, 12:27     Как разместить карту на Fragment #4
Цитата Сообщение от PhantomR Посмотреть сообщение
Кстати, есть нюанс, что т.к. необходимо использовать SupportMapFragment, то нужно вызывать v4 библиотеку, что может накладывать определённые ограничения.
Давно не занимался проектами без SupportLibrary. Если не секрет, какие ограничения? Нестыковка версий фрагментов в разных частях проекта? Падение на устройствах?
Yandex
Объявления
30.08.2016, 12:27     Как разместить карту на Fragment
Ответ Создать тему
Опции темы

Текущее время: 20:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru