С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
sirik2012
0 / 0 / 0
Регистрация: 13.05.2013
Сообщений: 45
#1

GPS + растровая карта - Программирование Android

21.08.2013, 15:57. Просмотров 1905. Ответов 9
Метки нет (Все метки)

Добрый день

Как привязать gps координаты к растровой карте? Карту сделал банально скриншотом из карт Гугл.
Я так думаю надо сделать минимум 2 контрольные точки, чтобы рассчитать масштаб. Но как банально перевести координаты gps к новым координатам на карте не имею представления(
Вот к примеру есть карта 800х800, начальный угол: 49.905000 029.123450 и какая не будь контрольная точка в центре карты: 55.000000 035.000000. Как перенести 3 точку с координатами: 51.000000 030.000000 на карту?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.08.2013, 15:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос GPS + растровая карта (Программирование Android):

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

GPS Tracker - Программирование Android
Функционал: шлёт GPS координаты по UDP. Струкутра: Activity - запускает и останавливает сервис, отображает кол-во отправленных и...

gps и 2 устройства - Программирование Android
Доброго времени суток! У меня вопрос возможно ли сделать так чтобы программа находила другие устройства с этой же программой по gps. А...

GPS координаты - Программирование Android
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ...

Работа с gps - Программирование Android
помогите пожалуйста! как получать скорость с помощью gps?

Обман с GPS - Программирование Android
Добрый день. Работаю в такси. Задача следующая: Рассчет стоимости заказа идет по километражу, на основе GPS Как сделать чтобы...

9
Wenceslaus
Android Developer
130 / 130 / 4
Регистрация: 05.07.2013
Сообщений: 205
21.08.2013, 17:24 #2
sirik2012, что ж, давайте рассуждать.
Дано: карта 800х800, левый верхний угол - 49.905000, 029.123450. Центр 55.000000, 035.000000 (хотя лучше брать правый нижний угол).
Найти положение точки 51.000000, 030.000000 на карте.
Решение:
Рассчитаем масштаб одного пикселя:
- высота пикселя (55.000000 - 49.905000) / 400 = 0,0127375.
- ширина пикселя (35.000000 - 29.123450) / 400 = 0,015.
но в полевых условиях пиксель будет квадратный, так что достаточно одной стороны.
Рассчитываем положение точки на карте:
- ось абсцисс (55.000000 - 51.000000) / 0,015 = 267.
- ось ордината (35.000000 - 30.000000) / 0,0127375 = 393.
Координаты есть, осталось нарисовать иконку.
Используем Canvas, рисуем относительно величины карты, учитывая размер самой иконки:
Java
1
Canvas.drawBitmap(bitmap, 267-width, 393-height, null);
, где bitmap - иконка; width - половина ширины иконки; height - половина высоты иконки.
Осталось добыть необходимые величины, вывести формулы и написать код.
Задача решена.
2
sirik2012
0 / 0 / 0
Регистрация: 13.05.2013
Сообщений: 45
22.08.2013, 12:55  [ТС] #3
Спасибо. Честно говоря я предполагал, что решение будет в этом направлении. Просто думал, что есть какая- не будь функция аналог VB'ной Scale. Ну ничего, буду так рассчитывать. Еще раз спасибо

Добавлено через 3 часа 46 минут
Есть еще вопрос по поводу многопоточности:
сейчас у меня в главном активити создается класс и в него передается управление (отображение карты и т.д.)
Надо создать поток, параллельно этому, который будет получаться координаты с GPS приемника и передавать их в этот. Но как не знаю.
Причем, 2 поток, тот что работает с GPS, должен работать всегда пока приложение активно
0
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
22.08.2013, 14:01 #4
Просто думал, что есть какая- не будь функция аналог VB'ной Scale
Конечно есть! Ту формулу что Вам привели - это самый простой вариант!!! Учтите что карта должна быть небольшого маштаба - например город, область. Если больше, то карта вытягивается-сжимается по сложным формулам. Лень просто так искать, но где-то у меня в архивах лежали ссылки. Помню что связано с названием координатной сетки используемой гуглом.

По поводу потоков! Все не так просто. Вам нужен не поток, СЕРВИС. Только сервис (насколько я понял) может работать даже когда программа закрыта и запускаться в автозагрузке. Есть еще почитайте про receiver. Я еще плохо это все изучил, но как я понял имено через receiver можно получать координаты в потоке. Ну и еще подумать как все это связать...

Короче http://startandroid.ru/ru/uroki/vse-uroki-spiskom.html
92-100 уроки...
0
sirik2012
0 / 0 / 0
Регистрация: 13.05.2013
Сообщений: 45
22.08.2013, 14:12  [ТС] #5
Как раз те самые уроки и штудирую) На счет сервиса, подумаю, но мне надо не только получать данные из потока, но и передавать.
0
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
22.08.2013, 18:29 #6
Не путайте поток и сервис!!! Это абсолютно разные понятия. Сервис больше похож на независимо-запущенную абсолютно отдельную программу... Общение между потоками очень простое - общие переменные с блокировкой против одновременного доступа. В сервисе похоже чуть сложнее... Больше напоминает общение двух программ.

Кстати учитывая что у Вас сервис работает постоянно, советую сохранять его данные сразу в базу. А на карту выводить их запросом из базы.
0
Wenceslaus
Android Developer
130 / 130 / 4
Регистрация: 05.07.2013
Сообщений: 205
22.08.2013, 19:22 #7
Цитата Сообщение от sirik2012 Посмотреть сообщение
Просто думал, что есть какая- не будь функция аналог VB'ной Scale.
Цитата Сообщение от Tester64 Посмотреть сообщение
Конечно есть!
Tester64, не сочтите за труд, просветите общественность, и меня в частности..
0
sirik2012
0 / 0 / 0
Регистрация: 13.05.2013
Сообщений: 45
23.08.2013, 12:15  [ТС] #8
Цитата Сообщение от Tester64 Посмотреть сообщение
Не путайте поток и сервис!!! Это абсолютно разные понятия. Сервис больше похож на независимо-запущенную абсолютно отдельную программу... Общение между потоками очень простое - общие переменные с блокировкой против одновременного доступа. В сервисе похоже чуть сложнее... Больше напоминает общение двух программ.

Кстати учитывая что у Вас сервис работает постоянно, советую сохранять его данные сразу в базу. А на карту выводить их запросом из базы.
Лучше и проще, имхо, все таки делать поток: он будет получать координаты, а на карте будет выводиться примерное раз в 2-3 минуты, посему не думаю что нужна база данных.
В будущем прикручу еще и модуль для передачи данных по wifi.

Весь прикол в том, что у меня уже написаны, или почти ), все 3 программы, но как их грамотно соединить...

Добавлено через 3 часа 4 минуты
В общем воспользовался этой статьей и сделал то что хотел. Правда немного подправил, но главное что работает!
Теперь осталось сделать чтобы GPS обновлялся по таймеру
0
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
23.08.2013, 22:41 #9
не сочтите за труд, просветите общественность, и меня в частности..
Признаюсь - проект еще открыт (и слегка заброшен уже на 10-11 месяцев)... Сильно эту область не изучал - читал "по диагонали" "на потом", собирал в коллекцию ссылки (с кучей других нужных для проекта тем). Выкладываю ссылки помеченые как "полезные", но не уверен что это именно то:

Яндекс: получить расстояние между координатами
http://en.wikipedia.org/wiki/Great_circle_distance
http://forum.sources.ru/index.php?showtopic=254641&view=showall
http://xpoint.ru/forums/misc/thread/14553.xhtml
http://geojason.info/demos/line-length-polygon-area-google-maps-v3/
https://developers.google.com/maps/d...atrix?hl=ru-RU

Поможет для "общего развития". Формул там много. Вроде не очень сложные, но сложнее обычной пропорции по 2м ключевым диагональным точкам куска карты...
0
sirik2012
0 / 0 / 0
Регистрация: 13.05.2013
Сообщений: 45
27.08.2013, 09:20  [ТС] #10
Спасибо, но там формулы слишком сложные У меня карта небольшая, порядка 1км на 1км. Так чо я делаю как подсказал Wenceslaus.
Теперь у меня другая задача, вернее проблема, как лучше правильно реализовать многопоточность, если есть такой список задач:
1. работа с сетью: передача и получение UDP пакетов, проверка на доступность точки wifi;
2. работа с GPS: получение координат, проверка на доступность спутников;
3. работа с растровой картой, тут все просто: прокрутка картинки, отображение дополнительных объектов;
4. главный модуль, с которого будет осуществляться переход к настройкам и картинке.

Как-то так)
0
27.08.2013, 09:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2013, 09:20
Привет! Вот еще темы с ответами:

Gps speed - Программирование Android
Всем привет! есть простая задача получить текущюю скорость. Нагуглил метод getSpeed(), но так и не смог понять как с ним работать. На...

Прослушка GPS - Программирование Android
Добрый день Регистрирую прослушку на доступность GPS так: BroadcastReceiver receiver = new BroadcastReceiver() { ...

GPS трекер - Программирование Android
Здравствуйте! Вот пишу диплом, завтра надо сдавать на проверку. Помогите пожалуйста! Дело горит! Надо реализовать отслеживание себя и...

Gps и расстояние - Программирование Android
Вопрос такой, можно ли по координатам которые записываются раз в 5 минут посчитать расстояние? Или это как-то по другому делать?


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

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

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