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

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

Войти
Регистрация
Восстановить пароль
 
_Vertigo_
13 / 13 / 2
Регистрация: 07.09.2013
Сообщений: 158
Завершенные тесты: 1
#1

Получение своего местоположения на карте - Android

24.11.2014, 15:06. Просмотров 1034. Ответов 5
Метки нет (Все метки)

Здравствуйте. Есть небольшая проблема с получением своего местоположения на карте. Никак не могу понять, как это сделать.
Что пробовал:

Java
1
2
3
4
private GoogleMap mMap;
public void GoButtonClick(View view) {
mMap.getMyLocation();
}
Данный способ крашится при вызове в программе по нажатию на кнопку.

Так же пытался "вешать" слушателя на событие, которое меняло местоположение:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private GoogleMap mMap;
private GoogleMap.OnMyLocationChangeListener myLocationChangeListener = new GoogleMap.OnMyLocationChangeListener() {
        @Override
        public void onMyLocationChange(Location location) {
            LatLng loc = new LatLng(location.getLatitude(), location.getLongitude());
            mMarker = mMap.addMarker(new MarkerOptions().position(loc));
            if(mMap != null){
                mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(loc, 16.0f));
            }
        }
    };
public void GoButtonClick(View view) {
mMap.setOnMyLocationChangeListener(myLocationChangeListener);
}
Тот же результат.
Как реализовать данную функцию?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2014, 15:06     Получение своего местоположения на карте
Посмотрите здесь:

Android Получение координат gps из своего класса (getLastKnownLocation)
Точное определение местоположения Android
Android GPS - Изменение местоположения
Android Отобразить кнопку своего местоположения в Google Maps
Android Как отправить данные местоположения через ACTION SEND в приложении android?
Определить расстояние от местоположения пользователя до выбранной точки и проложить маршрут Android
Android Разработка приложения для отображения местоположения пользователей на карте
Вылетает приложение с определением местоположения Android
Android Какие разрешения нужны для определения местоположения?
Определение местоположения Android
Программа для отслеживания местоположения по карте Android
Получение своего номера Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dajver
407 / 271 / 18
Регистрация: 18.09.2010
Сообщений: 1,106
24.11.2014, 15:54     Получение своего местоположения на карте #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Создаем такой сервис в отдельном классе.
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.IBinder;
import android.util.Log;
 
public class GPSTracker extends Service implements LocationListener {
 
    private final Context mContext;
    boolean isGPSEnabled = false;
    boolean isNetworkEnabled = false;
    boolean canGetLocation = false;
 
    Location location;
    double latitude;
    double longitude;
 
    private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10;
    private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1;
    protected LocationManager locationManager;
 
    public GPSTracker(Context context) {
        this.mContext = context;
        getLocation();
    }
 
    public Location getLocation() {
        
        try {
            locationManager = (LocationManager) mContext
                    .getSystemService(LOCATION_SERVICE);
 
            isGPSEnabled = locationManager
                    .isProviderEnabled(LocationManager.GPS_PROVIDER);
 
            isNetworkEnabled = locationManager
                    .isProviderEnabled(LocationManager.NETWORK_PROVIDER);
 
            if (!isGPSEnabled && !isNetworkEnabled) {
            } else {
                this.canGetLocation = true;
                if (isNetworkEnabled) {
                    locationManager.requestLocationUpdates(
                            LocationManager.NETWORK_PROVIDER,
                            MIN_TIME_BW_UPDATES,
                            MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                    Log.d("Network", "Network");
                    if (locationManager != null) {
                        location = locationManager
                                .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                        if (location != null) {
                            latitude = location.getLatitude();
                            longitude = location.getLongitude();
                        }
                    }
                }
                if (isGPSEnabled) {
                    if (location == null) {
                        locationManager.requestLocationUpdates(
                                LocationManager.GPS_PROVIDER,
                                MIN_TIME_BW_UPDATES,
                                MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                        Log.d("GPS Enabled", "GPS Enabled");
                        if (locationManager != null) {
                            location = locationManager
                                    .getLastKnownLocation(LocationManager.GPS_PROVIDER);
                            if (location != null) {
                                latitude = location.getLatitude();
                                longitude = location.getLongitude();
                            }
                        }
                    }
                }
            }
 
        } catch (Exception e) {
            e.printStackTrace();
        }
 
        return location;
    }
     
    public void stopUsingGPS(){
        if(locationManager != null){
            locationManager.removeUpdates(GPSTracker.this);
        }       
    }
     
    public double getLatitude(){
        if(location != null){
            latitude = location.getLatitude();
        }
        return latitude;
    }
    
    public double getLongitude(){
        if(location != null){
            longitude = location.getLongitude();
        }
        return longitude;
    }
 
    public boolean canGetLocation() {
        return this.canGetLocation;
    }
 
    @Override
    public void onLocationChanged(Location location) {
    }
 
    @Override
    public void onProviderDisabled(String provider) {
    }
 
    @Override
    public void onProviderEnabled(String provider) {
    }
 
    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
    }
 
    @Override
    public IBinder onBind(Intent arg0) {
        return null;
    }
 
}
Как использовать. В нужном фрагменте или активности создаем объект и используем его функции получения координат.
Java
1
2
GPSTracker gps = new GPSTracker(this);
LatLng location = new LatLng(gps.getLatitude(), gps.getLongitude());
_Vertigo_
13 / 13 / 2
Регистрация: 07.09.2013
Сообщений: 158
Завершенные тесты: 1
24.11.2014, 16:27  [ТС]     Получение своего местоположения на карте #3
dajver, спасибо, а можешь литературу дать?
dajver
407 / 271 / 18
Регистрация: 18.09.2010
Сообщений: 1,106
24.11.2014, 16:31     Получение своего местоположения на карте #4
Литературу по андроиду? Советую искать все ответы на stackoverflow. Забивайте любые вопросы касающиеся вашей проблемы на английском, и вам в первую очередь выпадет то что вы ищите. А по поводу литературы ничего не посоветую, учил язык уже на основе знаний языка Си и по мануалам разным.

http://startandroid.ru/ru/ возможно вам поможет. Куча туториалов разных.
_Vertigo_
13 / 13 / 2
Регистрация: 07.09.2013
Сообщений: 158
Завершенные тесты: 1
24.11.2014, 16:50  [ТС]     Получение своего местоположения на карте #5
dajver, нет, не по андроиду, а по твоему коду. Или хотя бы какой-то мануал по работе с картами. На стартандроиде на карты всего 3 урока, этого маловато мне.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
24.11.2014, 18:21     Получение своего местоположения на карте #6
_Vertigo_, http://www.vogella.com/tutorials/And...s/article.html
http://www.androidhive.info/2013/08/...oogle-maps-v2/
http://code.tutsplus.com/tutorials/a...--mobile-15896

Добавлено через 1 минуту
По GPS:
http://www.androidhive.info/2012/07/...ager-tutorial/
Yandex
Объявления
24.11.2014, 18:21     Получение своего местоположения на карте
Ответ Создать тему
Опции темы

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