Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
PhantomR
5 / 5 / 1
Регистрация: 04.02.2016
Сообщений: 78
#1

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

29.08.2016, 12:53. Просмотров 359. Ответов 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 минут
Вопрос решен!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.08.2016, 12:53
Ответы с готовыми решениями:

Обновление fragment из другого fragment
Добрый вечер всем!! Подскажите пожалуйста как обновить один фрагмент из другого...

Как из сервиса запустить fragment
Привет друзья в общем у меня есть Сервис который при определенных...

Как правильно работать с Fragment
Всем привет! Недавно начал изучать программирование под Андройд. На данный...

Как запустить метод Fragment из MainActivity?
есть фрагмент с картой, в нем метод: public void Sputnik(GoogleMap map) { ...

[Swipe, Fragment] - интерфейс как у маркета
Приветствую, которую неделю туплю и не могу сделать интерфейс как у маркета....

3
vxg
Модератор
3247 / 2048 / 322
Регистрация: 13.01.2012
Сообщений: 7,930
29.08.2016, 13:22 #2
Цитата Сообщение от PhantomR Посмотреть сообщение
Вопрос решен!
скажите идущим за вами "как"
0
PhantomR
5 / 5 / 1
Регистрация: 04.02.2016
Сообщений: 78
30.08.2016, 09:31  [ТС] #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" />
1
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
30.08.2016, 12:27 #4
Цитата Сообщение от PhantomR Посмотреть сообщение
Кстати, есть нюанс, что т.к. необходимо использовать SupportMapFragment, то нужно вызывать v4 библиотеку, что может накладывать определённые ограничения.
Давно не занимался проектами без SupportLibrary. Если не секрет, какие ограничения? Нестыковка версий фрагментов в разных частях проекта? Падение на устройствах?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.08.2016, 12:27

Как объявить ImageButton в Fragment.java?
Помогите пожалуйста!Есть Fragment как правильно объявить ImageButton,что бы по...

ClassNotFoundException. android.view.fragment. как лечить?
Добрый день всем. Есть очень банальная проблема. ClassNotFoundException ...

Пересоздание Fragment при листании, как избавиться?
Попробовал сделать таб-слайдер. Закладки с возможностью листать их слайдом....


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru