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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.82
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
#1

Центровка по текущей локации в GoogleMap - Android

09.05.2013, 16:45. Просмотров 2772. Ответов 33
Метки нет (Все метки)

А скажите, вот у меня есть код:

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.map);
                
        FragmentManager myFragmentManager = getSupportFragmentManager();
           SupportMapFragment mySupportMapFragment 
            = (SupportMapFragment)myFragmentManager.findFragmentById(R.id.map);
           myMap = mySupportMapFragment.getMap();
           
           myMap.setMyLocationEnabled(true);
    }
загружается карта (map api v2) и показывается синя точка где я нахожусь при нажатии кнопки (на карте значек есть, он появляется при написании этой строчки кода: myMap.setMyLocationEnabled(true) я смещаюсь (центрируюсь) на то место где нахожусь.
А как сделать, чтоб камера сразу центрировалась туда где я нахожусь.??? (нужно чтобы работало на Api 8)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
11.05.2013, 22:56  [ТС]     Центровка по текущей локации в GoogleMap #21
Цитата Сообщение от Digetix Посмотреть сообщение
Весь код чего?
Код класса где идёт работа с картой!
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 647
11.05.2013, 23:04     Центровка по текущей локации в GoogleMap #22
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
         @Override
     public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);    
        setContentView(R.layout.main);      
    
        myFragmentManager = getSupportFragmentManager();
            mySupportMapFragment  = (SupportMapFragment)myFragmentManager.findFragmentById(R.id.map);
            myMap = mySupportMapFragment.getMap();
            myMap.setMyLocationEnabled(true);
            
            LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
            locationManager.requestLocationUpdates(
        LocationManager.NETWORK_PROVIDER, 500, 1, new LocationListener (){
                              @Override
                              public void onLocationChanged(Location loc) {
                                  CameraUpdate center = CameraUpdateFactory.newLatLng(new LatLng(loc.getLatitude(), loc.getLongitude()));
                                  CameraUpdate zoom = CameraUpdateFactory.zoomTo(16);
                                  myMap.moveCamera(center);
                                  myMap.animateCamera(zoom);                                                
                              }
                            @Override
                            public void onProviderDisabled(String arg0) {
}
                            @Override
                            public void onProviderEnabled(String provider) {
}
                            @Override
                            public void onStatusChanged(String provider,int status, Bundle extras) {
}
                         
                            }); 
 
      }
Извините, что код съехавший
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
11.05.2013, 23:19  [ТС]     Центровка по текущей локации в GoogleMap #23
а это весь код? у меня пишет что обязательно нужно - 4 methods to implement:
-
android.location.LocationListener.onLocationChanged()
- android.location.LocationListener.onProviderDisabled()
- android.location.LocationListener.onProviderEnabled()
- android.location.LocationListener.onStatusChanged()

Добавлено через 1 минуту
Скажите вот так надо?

Javascript
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
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
 
import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
 
public class mapActivity extends FragmentActivity{
 
    FragmentManager myFragmentManager;
    SupportMapFragment mySupportMapFragment;
    GoogleMap myMap;
    
     @Override
     public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);    
        setContentView(R.layout.mapLoyaut);      
    
      myFragmentManager = getSupportFragmentManager();
            mySupportMapFragment  = (SupportMapFragment)myFragmentManager.findFragmentById(R.id.map);
            myMap = mySupportMapFragment.getMap();
            myMap.setMyLocationEnabled(true);
            
            LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
            locationManager.requestLocationUpdates(
        LocationManager.NETWORK_PROVIDER, 500, 1, new LocationListener (){
                              @Override
                              public void onLocationChanged(Location loc) {
                                  CameraUpdate center = CameraUpdateFactory.newLatLng(new LatLng(loc.getLatitude(), loc.getLongitude()));
                                  CameraUpdate zoom = CameraUpdateFactory.zoomTo(16);
                                  myMap.moveCamera(center);
                                  myMap.animateCamera(zoom);                                                
                              }
                            @Override
                            public void onProviderDisabled(String arg0) {
}
                            @Override
                            public void onProviderEnabled(String provider) {
}
                            @Override
                            public void onStatusChanged(String provider,int status, Bundle extras) {
}
                         
                            }); 
       } 
}
Добавлено через 3 минуты
и этот код постоянно сдвигает на центр или нет???
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 647
11.05.2013, 23:19     Центровка по текущей локации в GoogleMap #24
Цитата Сообщение от Stylish2013 Посмотреть сообщение
у меня пишет что обязательно нужно - 4 methods to implement:
Ну так они есть. В коде они
Цитата Сообщение от Stylish2013 Посмотреть сообщение
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Override
 public void onLocationChanged(Location loc) {
CameraUpdate center = CameraUpdateFactory.newLatLng(new LatLng(loc.getLatitude(), loc.getLongitude()));
CameraUpdate zoom = CameraUpdateFactory.zoomTo(16);
myMap.moveCamera(center);
 myMap.animateCamera(zoom);
}
 @Override
 public void onProviderDisabled(String arg0) {
}
@Override
 public void onProviderEnabled(String provider) {
}
 @Override
 public void onStatusChanged(String provider,int status, Bundle extras) {
}
У меня точно такой же код как вы написали. И работает.

Да, постоянно. Можете скинуть мне свой апк, я у себя проверю

Только ж я использую NETWORK
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
11.05.2013, 23:25  [ТС]     Центровка по текущей локации в GoogleMap #25
Цитата Сообщение от Digetix Посмотреть сообщение
Да, постоянно. Можете скинуть мне свой апк, я у себя проверю
Т.е. 1. запустили приложение оно показало где вы?
2. карту пальцем сместили, оно взяло и вернулось опять на центр синей точки? (если да, то через сколько времени???) у меня просто сдвинул и всё ничего не происходит. как сделать чтобы постоянно обновлялось и сдвигалось?
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 647
11.05.2013, 23:29     Центровка по текущей локации в GoogleMap #26
Цитата Сообщение от Stylish2013 Посмотреть сообщение
Т.е. 1. запустили приложение оно показало где вы?
Да.

Цитата Сообщение от Stylish2013 Посмотреть сообщение
карту пальцем сместили, оно взяло и вернулось опять на центр синей точки? (если да, то через сколько времени???)
Карту пальцем сместили ничего не произойдет. Карта смещается как только измениться позиция (координаты) пользователя, параметры обновления записаны в
Java
1
LocationManager.NETWORK_PROVIDER, 500, 1, new LocationListener (){
Где 500 - это 500 мсек, 1 - это 1 метр. То есть каждые 500 мсек и при изменении координат на 1 метр он будет обновлять локацию, соответственно двигать карту на центр. Вроде так должно быть

Или вы хотите сделать, чтоб переместил карту, а оно возвращало на центр, на синюю точку?
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
11.05.2013, 23:32  [ТС]     Центровка по текущей локации в GoogleMap #27
Цитата Сообщение от Digetix Посмотреть сообщение
Вроде так должно быть
А у вас так???

Сча пойду на улицу тестировать. Но вроде сча не центрирует на планшете сразу при запуске активити.((( Но улица всё покажет!)) я скоро)
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 647
11.05.2013, 23:34     Центровка по текущей локации в GoogleMap #28
Цитата Сообщение от Stylish2013 Посмотреть сообщение
А у вас так???
У меня при запуске сразу центрирует. По повода планшета не знаю. И может важно: у меня в манифесте стоит мин СДК 8, а целевой 13
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
11.05.2013, 23:50  [ТС]     Центровка по текущей локации в GoogleMap #29
После теста результаты такие:

1. Планшет теперь вообще не центрирует, хотя до этого работал замечательно.
2. Телефон работает странно. Иногда при перво запуске вообще ничего не делает, а иногда центрирует, но карта сама не подъезжает если стрелка за границами.
Что же делать?? уже не знаю. Как теперь и на планшете сделать чтобы работало?

А у меня в манифесте стоит minSdkVersion="8" и targetSdkVersion="8" - и я менял и результатов не дало.
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 647
11.05.2013, 23:55     Центровка по текущей локации в GoogleMap #30
А вы один раз на планшете запускали?
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
12.05.2013, 00:13  [ТС]     Центровка по текущей локации в GoogleMap #31
Цитата Сообщение от Digetix Посмотреть сообщение
А вы один раз на планшете запускали?
Много раз, сдвигов ноль.

Добавлено через 15 минут
Если удаляю
Javascript
1
2
CameraUpdate zoom = CameraUpdateFactory.zoomTo(16);
myMap.animateCamera(zoom);
то на планшете центрирует. парадокс.
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 647
12.05.2013, 13:49     Центровка по текущей локации в GoogleMap #32
Цитата Сообщение от Stylish2013 Посмотреть сообщение
то на планшете центрирует. парадокс.
Ну это ж установка масштаба (приближения) карты
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
12.05.2013, 14:54  [ТС]     Центровка по текущей локации в GoogleMap #33
Цитата Сообщение от Digetix Посмотреть сообщение
Ну это ж установка масштаба (приближения) карты
ну то да, если написан код приближения, то вообще ничего не работает.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2013, 20:20     Центровка по текущей локации в GoogleMap
Еще ссылки по теме:

Как перехватить пакет (запрос) данных при текущей передаче данных? Android
Android Проверка на достижение локации на карте
Android Маркер по центру MapView googleMap
Вычислить промежуток времени между текущей датой/временем и временем, введенным пользователем Android
Android Описание маркера в развернутом виде, GoogleMap API

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

Или воспользуйтесь поиском по форуму:
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 647
12.05.2013, 20:20     Центровка по текущей локации в GoogleMap #34
Задавайте вопрос на stackoverflow, там скорее помогут
Yandex
Объявления
12.05.2013, 20:20     Центровка по текущей локации в GoogleMap
Ответ Создать тему
Опции темы

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