С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.90/10: Рейтинг темы: голосов - 10, средняя оценка - 4.90
_Vertigo_
14 / 14 / 6
Регистрация: 07.09.2013
Сообщений: 159
Завершенные тесты: 1
1

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

24.11.2014, 15:06. Просмотров 1935. Ответов 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);
}
Тот же результат.
Как реализовать данную функцию?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2014, 15:06
Ответы с готовыми решениями:

Программа для отслеживания местоположения по карте
Доброго времени суток. Помогите пожалуйста написать программу для отслеживания...

Разработка приложения для отображения местоположения пользователей на карте
Доброго времени суток! Собираюсь разработать приложение по типу "Find my...

Отобразить кнопку своего местоположения в Google Maps
Как добавить (отобразить) кнопку своего местоположения в картах Google версии 1?

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

Получение координат gps из своего класса (getLastKnownLocation)
Один из методов класса содержит Location location; LocationManager lm =...

5
dajver
410 / 274 / 22
Регистрация: 18.09.2010
Сообщений: 1,114
24.11.2014, 15:54 2
Лучший ответ Сообщение было отмечено _Vertigo_ как решение

Решение

Создаем такой сервис в отдельном классе.
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());
1
_Vertigo_
14 / 14 / 6
Регистрация: 07.09.2013
Сообщений: 159
Завершенные тесты: 1
24.11.2014, 16:27  [ТС] 3
dajver, спасибо, а можешь литературу дать?
0
dajver
410 / 274 / 22
Регистрация: 18.09.2010
Сообщений: 1,114
24.11.2014, 16:31 4
Литературу по андроиду? Советую искать все ответы на stackoverflow. Забивайте любые вопросы касающиеся вашей проблемы на английском, и вам в первую очередь выпадет то что вы ищите. А по поводу литературы ничего не посоветую, учил язык уже на основе знаний языка Си и по мануалам разным.

http://startandroid.ru/ru/ возможно вам поможет. Куча туториалов разных.
0
_Vertigo_
14 / 14 / 6
Регистрация: 07.09.2013
Сообщений: 159
Завершенные тесты: 1
24.11.2014, 16:50  [ТС] 5
dajver, нет, не по андроиду, а по твоему коду. Или хотя бы какой-то мануал по работе с картами. На стартандроиде на карты всего 3 урока, этого маловато мне.
0
CoolMind
422 / 404 / 66
Регистрация: 06.10.2012
Сообщений: 1,734
24.11.2014, 18:21 6
_Vertigo_, http://www.vogella.com/tutorials/AndroidGoogleMaps/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/
1
24.11.2014, 18:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2014, 18:21

Определение местоположения
Добрый день! Возник интересный вопрос: Можно ли в приложении сделать такую...

GPS - Изменение местоположения
Здравствуйте ув. Программисты. Как можно реализовать следующее: -Есть...

Точное определение местоположения
здравствуйте,может кто знает как решаются такие задачи? нужно узнать точное...


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

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

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