Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
znseday
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 483
#1

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

25.03.2015, 17:38. Просмотров 2304. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2015, 17:38
Ответы с готовыми решениями:

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

программа для отображения объекта на карте по координатам
задача такая я задаю координаты объекта программа отображает объект на карте!...

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

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

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

13
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 582
Записей в блоге: 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() передать мои значения долготы и широты, или может кто в курсе как это делается?
0
znseday
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 483
04.04.2015, 21:34  [ТС] #3
disx, вероятно, вы забыли поменять запятую на точку.
Java
1
geoURI = geoURI.replaceAll(",", ".");
0
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 582
Записей в блоге: 1
04.04.2015, 22:46 #4
znseday, нет, это я сделал в другом классе, т.е. Longtitudе и Latitude уже приведены к виду 34.55748
0
znseday
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 483
04.04.2015, 23:18  [ТС] #5
disx, тогда я вас не понимаю, потому что в том коде, что вы приводите нет ни замены запятой на точку, ни вызова каких либо других функций/методов, которые могли бы эту запятую менять на точку.
0
Плутон
13 / 13 / 5
Регистрация: 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);
0
znseday
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 483
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);
выдаст запятые вместо точек.
0
Плутон
13 / 13 / 5
Регистрация: 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);
0
znseday
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 483
04.04.2015, 23:26  [ТС] #9
Плутон, да, или так, чтобы не менять запятые вручную)
0
Плутон
13 / 13 / 5
Регистрация: 29.06.2011
Сообщений: 85
04.04.2015, 23:27 #10
исправил свой ответ сверху
0
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 582
Записей в блоге: 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 минуту
кста, на Яндекс.карты ставит красную отметку самой точки, а почему у гугла нет, может еще есть какой параметр для этого?
0
znseday
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 483
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));
1
Плутон
13 / 13 / 5
Регистрация: 29.06.2011
Сообщений: 85
06.04.2015, 19:18 #13
А с какой целью вы используете google maps в приложение. Для маркеров, наверное, лучше использовать google maps api for android http://developer.android.com/google/play-services/maps.html
1
Valera22641
0 / 0 / 0
Регистрация: 06.07.2017
Сообщений: 1
06.07.2017, 13:49 #14
наткнулся на эту тему случайно.
мне кажется что вы перед координатами должны указать префикс q=
и будет отметка на карте в картах гугл
ну или ?q=
"geo:%f,%f?z=10&q=" и всё).
но наверно за это время вы и сами догадались. сори.
0
06.07.2017, 13:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2017, 13:49

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

Получить местоположение
Здравствуйте, возникла необходимость получить текущее местоположение,...

Местоположение блоков
Здравствуйте у меня тут вопрос образовался по месту положения блоков, накидал...


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

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

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