Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.76/29: Рейтинг темы: голосов - 29, средняя оценка - 4.76
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
1

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

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

Author24 — интернет-сервис помощи студентам
А скажите, вот у меня есть код:

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)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.05.2013, 16:45
Ответы с готовыми решениями:

Создание локации
Хочу создать изометрическую 2.5d игру (не знаю насколько корректно так её называть): карта 2d,...

googlemap
Привет всем. Вопрос собственно таков кто работал с googlemap киньте ссылки что бы почитать а то...

googlemap в C#
Здравствуйте! Подскажите! Как реализовать в си шарпе карту googlemap или google eath?

Получить x, y локации пикчербокса
Всем привет! У меня есть пикчер бокс с координатами 10,20 Как мне в переменную x занести 10, а в...

33
106 / 106 / 1
Регистрация: 09.04.2012
Сообщений: 655
10.05.2013, 22:16 2
А как вы находите локацию?
0
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
10.05.2013, 22:53  [ТС] 3
Вот весь код:

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
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
import android.content.Context;
import android.location.Criteria;
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 android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
 
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 implements LocationListener {
    
    private GoogleMap myMap;
    private LocationManager locationManager;
    private String provider;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.mapLayout);
 
        // location
        FragmentManager myFragmentManager = getSupportFragmentManager();
        SupportMapFragment mySupportMapFragment = (SupportMapFragment) myFragmentManager
                .findFragmentById(R.id.map);
        myMap = mySupportMapFragment.getMap();
 
        myMap.setMyLocationEnabled(true);
 
        LocationManager service = (LocationManager) getSystemService(LOCATION_SERVICE);
        boolean enabledGPS = service
                .isProviderEnabled(LocationManager.GPS_PROVIDER);
    
        if (!enabledGPS) {
            Toast.makeText(this, "Нет сигнала GPS", Toast.LENGTH_LONG).show();
            
        }
        
        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
 
        Criteria criteria = new Criteria();
        provider = locationManager.getBestProvider(criteria, false);
        Location location = locationManager.getLastKnownLocation(provider);
 
        // Initialize the location fields
        if (location != null) {
            Toast.makeText(this, "Selected Provider " + provider,
             Toast.LENGTH_SHORT).show();
            onLocationChanged(location);
        } else {
            // do something
        }
 
    }
 
    /* Request updates at startup */
    @Override
    protected void onResume() {
        super.onResume();
        locationManager.requestLocationUpdates(provider, 400, 1, this);
    }
 
    /* Remove the locationlistener updates when Activity is paused */
    @Override
    protected void onPause() {
        super.onPause();
        locationManager.removeUpdates(this);
    }
 
    @Override
    public void onLocationChanged(Location location) {
        // TODO Auto-generated method stub
 
        double lat = location.getLatitude();
        double lng = location.getLongitude();
         Toast.makeText(this, "Location " + lat+","+lng,
         Toast.LENGTH_LONG).show();
        LatLng coordinate = new LatLng(lat, lng);
         Toast.makeText(this, "Location " +
         coordinate.latitude+","+coordinate.longitude,
         Toast.LENGTH_LONG).show();
 
        // добавил, вот как я понимаю это и центрирует и приближает
        myMap.animateCamera(CameraUpdateFactory.newLatLng(coordinate));
        CameraUpdate center = CameraUpdateFactory
                .newLatLng(new LatLng(lat, lng));
        CameraUpdate zoom = CameraUpdateFactory.zoomTo(15);
        myMap.moveCamera(center);
        myMap.animateCamera(zoom);
    }
 
    @Override
    public void onProviderDisabled(String provider) {
        Toast.makeText(this, "Enabled new provider " + provider,
         Toast.LENGTH_SHORT).show();
    }
 
    @Override
    public void onProviderEnabled(String provider) {
         Toast.makeText(this, "Disabled provider " + provider,
         Toast.LENGTH_SHORT).show();
    }
 
    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
        // TODO Auto-generated method stub
 
    }
 
}
На версии 2.3.4 (api 10) не центрирует, а планшете версия 4.2.2 (api 17) работает центрирование и приближение. Что же сделать????
0
106 / 106 / 1
Регистрация: 09.04.2012
Сообщений: 655
10.05.2013, 23:50 4
Я сейчас тоже стою перед такой проблемой. Если я вас правильно понял, то вы хотите, чтоб при запуске ката передвинулась на синюю точку? Если да, то мне кажется что сразу не центрирует потому что есть вот это
Location location = locationManager.getLastKnownLocation(provider);
То есть берет ранее известную локацию и двигает на неё карту. У вас провайдер GPS, ему нужно время чтобы поймать 3+ спутников. Я так понимаю, что при запуске он не успевает взять локацию и берет старую. Вот туда и двигает

Добавлено через 1 минуту
Цитата Сообщение от Stylish2013 Посмотреть сообщение
а планшете версия 4.2.2 (api 17) работает центрирование и приближение
Вы имеете в виду при запуске карта не становиться в центр локации или нельзя даже элементами управления приближать?
0
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
10.05.2013, 23:54  [ТС] 5
Да он берёт старую локацию туда двигает карту, хотя меня синей точкой определяет в другом месте, если нажать кнопку автоматического центрирования я смещаюсь туда куда нужно и если я передвигаюсь, то и на карте я показываюсь стрелочкой и естественно она тоже движется, но карта стоит на месте и если самому её не пододвигать, то не будет видно стрелки. Спутники сразу не определяются, но потом когда они определяются хорошо, все-равно не работает, а вот на nexus, планшете версия 4.2.2 (api 17) работает центрирование и приближение, всё как надо!
0
106 / 106 / 1
Регистрация: 09.04.2012
Сообщений: 655
10.05.2013, 23:59 6
Цитата Сообщение от Stylish2013 Посмотреть сообщение
но карта стоит на месте и если самому её не пододвигать, то не будет видно стрелки
Так вы хотите сделать чтоб когда стрелочка подходила к границам экрана, то перемещалась в центр? Как на картах версии 1 ?
0
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
11.05.2013, 00:22  [ТС] 7
Я хочу чтобы я всегда был в центре. Как только запускаю карту и когда начинаю передвигаться. Пусть с опозданием, но центрировало меня и приближало.
0
106 / 106 / 1
Регистрация: 09.04.2012
Сообщений: 655
11.05.2013, 00:24 8
Вот код, который по идее должен передвигать карту если синяя точка подходит к краю
Java
1
2
3
4
5
6
           LatLngBounds bounds = this.mMap.getProjection().getVisibleRegion().latLngBounds;
 
        if(!bounds.contains(new LatLng(location.getLatitude(), location.getLongitude())))
        {
             mMap.animateCamera(CameraUpdateFactory.newLatLng(new LatLng(location.getLatitude(), location.getLongitude())));
        }
Я его не пробовал. Может вам пригодиться
0
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
11.05.2013, 00:26  [ТС] 9
У меня этот код центрирует и приближает на nexus карту:

Javascript
1
2
3
4
5
6
 myMap.animateCamera(CameraUpdateFactory.newLatLng(coordinate));
        CameraUpdate center = CameraUpdateFactory
                .newLatLng(new LatLng(lat, lng));
        CameraUpdate zoom = CameraUpdateFactory.zoomTo(15);
        myMap.moveCamera(center);
        myMap.animateCamera(zoom);
0
106 / 106 / 1
Регистрация: 09.04.2012
Сообщений: 655
11.05.2013, 00:29 10
А чем отличается myMap.animateCamera от myMap.moveCamera ?
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
11.05.2013, 00:44 11
вероятно, animateCamera перемещает плавно, а moveCamera перемещает мгновенно.
0
106 / 106 / 1
Регистрация: 09.04.2012
Сообщений: 655
11.05.2013, 00:46 12
Так там получается и то, и другое
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
11.05.2013, 00:48 13
там перемещает к координатам мгновенно, а зум применяет плавно.
0
106 / 106 / 1
Регистрация: 09.04.2012
Сообщений: 655
11.05.2013, 01:00 14
А как можно взять координаты синей точки на карте? Которая показывает мою позицию
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
11.05.2013, 01:06 15
Java
1
2
3
4
5
6
7
8
9
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(  
LocationManager.GPS_PROVIDER, 5000, 10, new LocationListener (){
             @Override
             public void onLocationChanged(Location loc) {
                               CameraUpdate center = CameraUpdateFactory.newLatLng(new LatLng(loc.getLatitude(), loc.getLongitude()));
                               myMap.moveCamera(center);  
             }
});
0
106 / 106 / 1
Регистрация: 09.04.2012
Сообщений: 655
11.05.2013, 01:57 16
Спасибо, работает. А как использовать
Java
1
2
CameraUpdate center = CameraUpdateFactory.newLatLng(new LatLng(loc.getLatitude(), loc.getLongitude()));
myMap.moveCamera(center);
один раз при запуске? И не использовать location = locationManager.getLastKnownLocation(provider);.
То есть я хочу чтоб активити запустилась, получить локацию и переместить карту, единожды.
0
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
11.05.2013, 03:10  [ТС] 17
Расскажите, что работает и как? Перемещает карту на центр где я нахожусь?
0
106 / 106 / 1
Регистрация: 09.04.2012
Сообщений: 655
11.05.2013, 11:38 18
Перемещает карту в центр синей точке. Но это на реальном устройстве, с 2.3.6
0
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
11.05.2013, 16:50  [ТС] 19
Цитата Сообщение от Digetix Посмотреть сообщение
Перемещает карту в центр синей точке. Но это на реальном устройстве, с 2.3.6
Мне тоже нужно проверит это на ранней версии - на 2.3.4. А не могли бы вы весь код привести, чтоб сравнить. А то уже сложно понять где, что нужно поменять, тут такие тонкости.
0
106 / 106 / 1
Регистрация: 09.04.2012
Сообщений: 655
11.05.2013, 21:47 20
Цитата Сообщение от Stylish2013 Посмотреть сообщение
А не могли бы вы весь код привести, чтоб сравнить
Весь код чего?
0
11.05.2013, 21:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.05.2013, 21:47
Помогаю со студенческими работами здесь

Проверка на достижение локации на карте
Хотелось бы динамически получать координаты и выводить их в виде тоста. @Override protected...

Создание не большой локации и прогулка по ней
Приветствую всех профессионалов и любителей. Сразу скажу, в области 3D моделирования сам даже не...

Вытащить все адреса из определенной локации
Добрый день, кто может подсказать, как вытащить все адреса улиц и зданий из Google, скажем по...

Где хранится информация о локации на сайте
Всем привет! У меня такая ситуация. Есть один сайт, который определяет вашу страну и в...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru