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

Отобразить местоположение на карте по координатам

25.03.2015, 17:38. Показов 6343. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Взял из книжки такой код для отображения местоположения на карте по заданным координатам (например, взял координаты Москвы):
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);
Т.е. проблема в том, что является разделителем дробной части числа.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.03.2015, 17:38
Ответы с готовыми решениями:

Расстановка меток на Я.Карте по координатам
Есть база данных в ней хранятся координаты точек. Необходимо поставить метки на карте по этим координатам. Как все это организовать?

программа для отображения объекта на карте по координатам
задача такая я задаю координаты объекта программа отображает объект на карте! могу я как то использовать Google Maps или же готовую карту...

Нарисовать граф так что бы вершины соответствовали координатам на карте
Добрый день:) Пытаюсь сделать следующую программу: Вершины графа - координаторы объектов на карте (координаты определяю по...

13
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 684
04.04.2015, 20:00
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() передать мои значения долготы и широты, или может кто в курсе как это делается?
0
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 585
04.04.2015, 21:34  [ТС]
disx, вероятно, вы забыли поменять запятую на точку.
Java
1
geoURI = geoURI.replaceAll(",", ".");
0
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 684
04.04.2015, 22:46
znseday, нет, это я сделал в другом классе, т.е. Longtitudе и Latitude уже приведены к виду 34.55748
0
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 585
04.04.2015, 23:18  [ТС]
disx, тогда я вас не понимаю, потому что в том коде, что вы приводите нет ни замены запятой на точку, ни вызова каких либо других функций/методов, которые могли бы эту запятую менять на точку.
0
13 / 13 / 5
Регистрация: 29.06.2011
Сообщений: 85
04.04.2015, 23:20
Попробуйте, так работает
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);
0
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 585
04.04.2015, 23:21  [ТС]
попробуйте все же добавить ту строчку, о которой я говорю, т.е. ваш полный код с учетом моей поправки должен выглядеть так:
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);
выдаст запятые вместо точек.
0
13 / 13 / 5
Регистрация: 29.06.2011
Сообщений: 85
04.04.2015, 23:24
ваш код - не лучший вариант, лучше
Java
1
String geoURI = String.format(Locale.ENGLISH, "geo:%f,%f?z=10", 55.75, 37.62);
0
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 585
04.04.2015, 23:26  [ТС]
Плутон, да, или так, чтобы не менять запятые вручную)
0
13 / 13 / 5
Регистрация: 29.06.2011
Сообщений: 85
04.04.2015, 23:27
исправил свой ответ сверху
0
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 684
06.04.2015, 13:40
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 минуту
кста, на Яндекс.карты ставит красную отметку самой точки, а почему у гугла нет, может еще есть какой параметр для этого?
0
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 585
06.04.2015, 19:11  [ТС]
disx,
Java
1
String geoURI = String.format(Locale.ENGLISH, "geo:%f,%f?z=10", Double.toString(Latitude), Double.toString(Longtitude));
1
13 / 13 / 5
Регистрация: 29.06.2011
Сообщений: 85
06.04.2015, 19:18
А с какой целью вы используете google maps в приложение. Для маркеров, наверное, лучше использовать google maps api for android http://developer.android.com/g... /maps.html
1
0 / 0 / 0
Регистрация: 06.07.2017
Сообщений: 1
06.07.2017, 13:49
наткнулся на эту тему случайно.
мне кажется что вы перед координатами должны указать префикс q=
и будет отметка на карте в картах гугл
ну или ?q=
"geo:%f,%f?z=10&q=" и всё).
но наверно за это время вы и сами догадались. сори.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.07.2017, 13:49
Помогаю со студенческими работами здесь

Как отобразить всех пользователей на карте?
Есть задача разместить всех пользователей(давших разрешение) на карте. Карту могут видеть и другие пользователи. Как это можно...

GMap Net Отобразить маршрут точки на карте
Здравствуйте! Помогите, кто знает, решить задачку. Есть две формы Form1 - Форма с GmapControl1 - API Gmap net Form2 - Форма для ввода...

Отобразить кривую на форме по координатам из файла
Текстовый файл имеет пары координат графика (создать для монотонно спадающей кривой: расстояние-температура, 6-7 точек). Отобразить кривую...

Отобразить на карте количество клиентов по списку город-количество клиентов
У меня есть список количества клиентов компании, разбитый по городам. Например: Москва: 100, Петербург: 250 клиентов. Цель такая - на...

Местоположение
Добрый вечер. Нужно определить местоположение. Так как у меня эмулятор, который подключен к интернету, я пытаюсь получить местоположение...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru