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

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

Войти
Регистрация
Восстановить пароль
 
znseday
16 / 16 / 1
Регистрация: 20.03.2012
Сообщений: 456
#1

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

25.03.2015, 17:38. Просмотров 1930. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Отобразить местоположение на карте по координатам (Программирование Android):

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

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

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

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

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

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

13
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 557
Записей в блоге: 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
16 / 16 / 1
Регистрация: 20.03.2012
Сообщений: 456
04.04.2015, 21:34  [ТС] #3
disx, вероятно, вы забыли поменять запятую на точку.
Java
1
geoURI = geoURI.replaceAll(",", ".");
0
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 557
Записей в блоге: 1
04.04.2015, 22:46 #4
znseday, нет, это я сделал в другом классе, т.е. Longtitudе и Latitude уже приведены к виду 34.55748
0
znseday
16 / 16 / 1
Регистрация: 20.03.2012
Сообщений: 456
04.04.2015, 23:18  [ТС] #5
disx, тогда я вас не понимаю, потому что в том коде, что вы приводите нет ни замены запятой на точку, ни вызова каких либо других функций/методов, которые могли бы эту запятую менять на точку.
0
Плутон
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);
0
znseday
16 / 16 / 1
Регистрация: 20.03.2012
Сообщений: 456
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 / 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);
0
znseday
16 / 16 / 1
Регистрация: 20.03.2012
Сообщений: 456
04.04.2015, 23:26  [ТС] #9
Плутон, да, или так, чтобы не менять запятые вручную)
0
Плутон
13 / 13 / 4
Регистрация: 29.06.2011
Сообщений: 85
04.04.2015, 23:27 #10
исправил свой ответ сверху
0
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 557
Записей в блоге: 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
16 / 16 / 1
Регистрация: 20.03.2012
Сообщений: 456
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 / 4
Регистрация: 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
Привет! Вот еще темы с ответами:

Местоположение mm.cfg - Flash
Задача такова - необходимо подгрузить swf'ку к существующей, делаем указывая PreloadSWF= в mm.cfg, но на машине одного из "конечных...

Местоположение плагина - WordPress
Подскажите пожалуйста, вопрос очень дурацкий, к сожалению. Начал недавно изучать Wordpress, возник вопрос - как можно плагин перемещать по...

местоположение в форме - HTML, CSS
Здравствуйте, у меня есть форма загрузки...помогите расставить все по местам... начало выглядит стандартно... а вот дальше я хотел...

Местоположение в Delphi - Delphi WinAPI
Здравствуйте, подскажите пожалуйста, можно ли в Delphi узнать своё местоположение, если да, то каким образом, какие функции в этом помогут?


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

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

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