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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
znseday
16 / 16 / 1
Регистрация: 20.03.2012
Сообщений: 450
#1

Отобразить местоположение на карте по координатам - Программирование Android

25.03.2015, 17:38. Просмотров 1671. Ответов 12
Метки нет (Все метки)

Взял из книжки такой код для отображения местоположения на карте по заданным координатам (например, взял координаты Москвы):
Java
1
2
3
4
                    String geoURI = String.format("geo:%f,%f?z=10", 55.75, 37.62); // использовать другой формат запроса?
                    Uri geo = Uri.parse(geoURI);
                    Intent geoMap = new Intent(Intent.ACTION_VIEW, geo);
                    startActivity(geoMap);
Сначала андроид (как и подобает) предлагает выбрать какую программу использовать (в моем случае это Гугл карты и Яндекс карты). Но местоположение отображает где-то на краю вселенной в океане (при этом метку с координатами подписывает правильно).

В чем может быть дело? Как сделать, чтобы местоположение отображалось правильно?
(У меня есть подозрение, что нужно как-то по другому отправлять запрос (в другом формате))

Добавлено через 8 минут
Пока решил пока проблему так:
Java
1
2
3
4
5
6
                    String geoURI = String.format("geo:%f;%f?z=10", 55.75, 37.62);
                    geoURI = geoURI.replaceAll(",", ".");
                    geoURI = geoURI.replaceAll(";", ",");
                    Uri geo = Uri.parse(geoURI);
                    Intent geoMap = new Intent(Intent.ACTION_VIEW, geo);
                    startActivity(geoMap);
Т.е. проблема в том, что является разделителем дробной части числа.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2015, 17:38     Отобразить местоположение на карте по координатам
Посмотрите здесь:
Местоположение Android
Actionbar своё местоположение Android
Google Maps местоположение Android
Android Определение местоположение Genymotion
Android Включение настроек программно. Местоположение определить по сотовой сети. Wi-Fi
Как получить приблизительное местоположение пользователя без использования сервисов Google? Android
Нарисовать на карте Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
disx
20 / 20 / 0
Регистрация: 26.02.2014
Сообщений: 519
Записей в блоге: 1
04.04.2015, 20:00     Отобразить местоположение на карте по координатам #2
znseday, присоединяюсь к вопросу, та же проблема...

есть код:
Java
1
2
3
4
5
String geoURI = String.format("geo:%f;%f", Latitude, Longtitude);
                geoURI = geoURI.replaceAll(";", ",");
                Uri geo = Uri.parse(geoURI);
                Intent geoMap = new Intent(Intent.ACTION_VIEW, geo);
                startActivity(geoMap);
при таком раскладе открывает карту и показывает произвольный район, а нужна же точка координат???

в книжке есть такой рабочий пример:
Java
1
2
3
4
5
6
7
8
9
 public void onClick(View v) {
            if (currentLocation != null) {
            Uri uri = Uri.parse(String.format("geo:%f,%f", 
                    currentLocation.getLatitude(), 
                    currentLocation.getLongitude()));
            Intent geoMap = new Intent(Intent.ACTION_VIEW, uri);
            startActivity(geoMap);
            }
        }
думаю что этот пример где-то рядом, но задача в том чтобы в getLongtitude() и getLatitude() передать мои значения долготы и широты, или может кто в курсе как это делается?
znseday
16 / 16 / 1
Регистрация: 20.03.2012
Сообщений: 450
04.04.2015, 21:34  [ТС]     Отобразить местоположение на карте по координатам #3
disx, вероятно, вы забыли поменять запятую на точку.
Java
1
geoURI = geoURI.replaceAll(",", ".");
disx
20 / 20 / 0
Регистрация: 26.02.2014
Сообщений: 519
Записей в блоге: 1
04.04.2015, 22:46     Отобразить местоположение на карте по координатам #4
znseday, нет, это я сделал в другом классе, т.е. Longtitudе и Latitude уже приведены к виду 34.55748
znseday
16 / 16 / 1
Регистрация: 20.03.2012
Сообщений: 450
04.04.2015, 23:18  [ТС]     Отобразить местоположение на карте по координатам #5
disx, тогда я вас не понимаю, потому что в том коде, что вы приводите нет ни замены запятой на точку, ни вызова каких либо других функций/методов, которые могли бы эту запятую менять на точку.
Плутон
13 / 13 / 4
Регистрация: 29.06.2011
Сообщений: 85
04.04.2015, 23:20     Отобразить местоположение на карте по координатам #6
Попробуйте, так работает
Java
1
2
3
4
String geoURI = String.format(Locale.ENGLISH, "geo:%f,%f?z=10", 55.75, 37.62); // использовать другой формат запроса?
        Uri geo = Uri.parse(geoURI);
        Intent geoMap = new Intent(Intent.ACTION_VIEW).setData(geo);
        startActivity(geoMap);
znseday
16 / 16 / 1
Регистрация: 20.03.2012
Сообщений: 450
04.04.2015, 23:21  [ТС]     Отобразить местоположение на карте по координатам #7
попробуйте все же добавить ту строчку, о которой я говорю, т.е. ваш полный код с учетом моей поправки должен выглядеть так:
Java
1
2
3
4
5
6
tring geoURI = String.format("geo:%f;%f", Latitude, Longtitude);
                geoURI = geoURI.replaceAll(",", ".");
                geoURI = geoURI.replaceAll(";", ",");
                Uri geo = Uri.parse(geoURI);
                Intent geoMap = new Intent(Intent.ACTION_VIEW, geo);
                startActivity(geoMap);
Добавлено через 1 минуту
Плутон, в РФ
Java
1
String.format("geo:%f,%f?z=10", 55.75, 37.62);
выдаст запятые вместо точек.
Плутон
13 / 13 / 4
Регистрация: 29.06.2011
Сообщений: 85
04.04.2015, 23:24     Отобразить местоположение на карте по координатам #8
ваш код - не лучший вариант, лучше
Java
1
String geoURI = String.format(Locale.ENGLISH, "geo:%f,%f?z=10", 55.75, 37.62);
znseday
16 / 16 / 1
Регистрация: 20.03.2012
Сообщений: 450
04.04.2015, 23:26  [ТС]     Отобразить местоположение на карте по координатам #9
Плутон, да, или так, чтобы не менять запятые вручную)
Плутон
13 / 13 / 4
Регистрация: 29.06.2011
Сообщений: 85
04.04.2015, 23:27     Отобразить местоположение на карте по координатам #10
исправил свой ответ сверху
disx
20 / 20 / 0
Регистрация: 26.02.2014
Сообщений: 519
Записей в блоге: 1
06.04.2015, 13:40     Отобразить местоположение на карте по координатам #11
znseday, Плутон, ребят чета не работает как ни пробовал, опишу поподробнее:

в одном из классов получаю из строки, координаты вида: "Название, 53,881700 | 27,592914"
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
mes = messages.getMessageBody();
            mes=mes.replaceAll(",", ".");//делаю это действие здесь потому что если это не сделать, не //парсится в Double, поэтому в основном классе этого и не делаю.
                 String div="|";
                 int divider = mes.indexOf(div);
                 String Lo = mes.substring(10, divider-1);
                 String La = mes.substring(divider+2);
                 
                Longtitude=Double.parseDouble(Lo);
                Latitude=Double.parseDouble(La);
             
                String ms = String.valueOf(Longtitude);
                String ms1 = String.valueOf(Latitude);
                Toast.makeText(context, ms+" "+ms1,
                 Toast.LENGTH_LONG).show();
в основном классе сейчас так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
Longtitude=MessageReceiver.Longtitude;
        Latitude=MessageReceiver.Latitude;
        btnmap.setOnClickListener(new OnClickListener() {
 
            @Override
            public void onClick(View v) {
                
                String geoURI = String.format("geo:%f,%f?z=10", Latitude, Longtitude);
                geoURI = geoURI.replaceAll(";", ",");
                Uri geo = Uri.parse(geoURI);
                Intent geoMap = new Intent(Intent.ACTION_VIEW, geo);
                startActivity(geoMap);
и при таком раскладе все время отправляет в Атлантический океан (хотя указаны координаты Минска),....

но если вписать вручную координаты вместо моих Latitude и Longtitude то оно открывает отображая город вцелом где есть эта координата, а не увеличивает масштаб как делается при нажатии на карте кнопки "мое местоположение" а нужно именно так.., отсюда вопросы:

что не так в моих переменных?

и как сделать чтоб масштабировало точку на карте как у гугла "найти местоположение"?

Добавлено через 1 час 2 минуты
фсе, разобрался с ошибкой, работает так:
Java
1
2
3
String geoUri = String.format("geo:%s,%s?z=15", Double.toString(Latitude), Double.toString(Longtitude));
                Intent geoMap = new Intent(Intent.ACTION_VIEW, Uri.parse(geoUri));
                startActivity(geoMap);
масштабирование выставляется по желанию от 2-х до 23-х.


но опять же как сделать чтоб отмечало эту тучку на карте а не просто показывало кусок карты где она находится, пожалуй это последний вопрос который меня терзает на эту тему ?

Добавлено через 2 часа 21 минуту
кста, на Яндекс.карты ставит красную отметку самой точки, а почему у гугла нет, может еще есть какой параметр для этого?
znseday
16 / 16 / 1
Регистрация: 20.03.2012
Сообщений: 450
06.04.2015, 19:11  [ТС]     Отобразить местоположение на карте по координатам #12
disx,
Java
1
String geoURI = String.format(Locale.ENGLISH, "geo:%f,%f?z=10", Double.toString(Latitude), Double.toString(Longtitude));
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.04.2015, 19:18     Отобразить местоположение на карте по координатам
Еще ссылки по теме:
Android Не определяется путь к SD карте
Путь к карте памяти Android
Провести перпендикуляр на карте Android
Две точки GPS на карте Android
Android Проверка на достижение локации на карте

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

Или воспользуйтесь поиском по форуму:
Плутон
13 / 13 / 4
Регистрация: 29.06.2011
Сообщений: 85
06.04.2015, 19:18     Отобразить местоположение на карте по координатам #13
А с какой целью вы используете google maps в приложение. Для маркеров, наверное, лучше использовать google maps api for android http://developer.android.com/google/...ices/maps.html
Yandex
Объявления
06.04.2015, 19:18     Отобразить местоположение на карте по координатам
Ответ Создать тему
Опции темы

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