Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
kirich iz Che
0 / 0 / 1
Регистрация: 29.03.2010
Сообщений: 25
1

Приложение с геометками

28.10.2016, 17:46. Просмотров 579. Ответов 16

Добрый день.
Я новичок в разработке на андроид, появилась идея и я пытаюсь ее реализовать. Если в двух словах приложение использует жпс пользователей и делает метку на карте (ориентир foursqure).

Вопрос по поводу меток. Нужно ли организовывать отдельный сервер под все это дело, или гугл карты это покрывают? не очень понимаю этот момент.
Прошу вашего совета.

и если можно, хотел бы в этой теме дальше задавать свои вопросы.

спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2016, 17:46
Ответы с готовыми решениями:

Допиленное узкоспециализированное приложение или неповоротливое многофункциональное приложение?
Если вопрос про "что нужно знать?" висит, то и этот должен зайти. Появилась...

Узнать приложение которое запустило моё приложение
Приветствую всех! Помогите разобраться. Есть ли возможность узнать, что за...

Сообщение "приложение остановлено" постоянно, даже когда приложение вообще не запущено
Собственно ,сабж в топике

Переделать приложение для Android в приложение для ПК
Встретилась очень мне нужное приложение для анроид систем. К моему сожалению...

Работа с геометками к видео
Уважаемые друзья! Кто сталкивался с задачами по геометкам для видео?...

16
shavuz
114 / 120 / 26
Регистрация: 29.01.2014
Сообщений: 596
30.10.2016, 12:20 2
не очень понятен вопрос. вы хотите на карте показывать маркер или несколько маркеров?
вот так, если я правельно понял:
Java
1
2
3
4
5
6
@Override
public void onMapReady(GoogleMap map) {
    map.addMarker(new MarkerOptions()
        .position(new LatLng(10, 10))
        .title("Hello world"));
}
а описано это тут:
https://developers.google.com/maps/documentation/android-api/marker

а можно еще так : http://bfy.tw/8Su7
0
kirich iz Che
0 / 0 / 1
Регистрация: 29.03.2010
Сообщений: 25
30.10.2016, 12:23  [ТС] 3
Да, будет составляться карта на которой будут видны все геометки, которые сделали юзеры (друзья юзеров). Саму метку не проблема поставить, а вот насчет показывания всех и есть вопрос
0
shavuz
114 / 120 / 26
Регистрация: 29.01.2014
Сообщений: 596
30.10.2016, 13:00 4
вопрос как сделать много маркеров на карте?

есть много варриантов, вот один например:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
ArrayList<MarkerData> markersArray = new ArrayList<MarkerData>();
 
for(int i = 0 ; i < markersArray.size() ; i++ ) {
 
    createMarker(markersArray.get(i).getLatitude(), markersArray.get(i).getLongitude(), markersArray.get(i).getTitle(), markersArray.get(i).getSnippet(), markersArray.get(i).getIconResID());
}
 
...
 
protected void createMarker(double latitude, double longitude, String title, String snippet, int iconResID) {
 
    return googleMap.addMarker(new MarkerOptions()
            .position(new LatLng(latitude, longitude))
            .anchor(0.5f, 0.5f)
            .title(title)
            .snippet(snippet);
            .icon(BitmapDescriptorFactory.fromResource(iconResID)));
}
Добавлено через 3 минуты
или вопрос как получить геопозицию всех друзей?
1
xaat
43 / 16 / 6
Регистрация: 05.12.2015
Сообщений: 65
30.10.2016, 15:30 5
Цитата Сообщение от shavuz Посмотреть сообщение
или вопрос как получить геопозицию всех друзей?
На сервере где то хранить. Я бы использовал БД в Firebase.
1
kirich iz Che
0 / 0 / 1
Регистрация: 29.03.2010
Сообщений: 25
30.10.2016, 15:38  [ТС] 6
Спасибо, но вопрос был более абстрактный) С кодом разберусь походу дела.


На сервере где то хранить. Я бы использовал БД в Firebase.
А вот например в яндекс.транпорт берется точка по gps в автобусе и она по карте едет. Это постоянно обновление базы происходит?
звучит сложно и нагруженно
0
shavuz
114 / 120 / 26
Регистрация: 29.01.2014
Сообщений: 596
30.10.2016, 15:49 7
аааа. ну в принципе это делается так. конечно нужен сервер. фаербейс или бэкэндлесс вполне подойдут. нужно сделать два поллинг механизма, один будет отправлять данные о местоположении на сервер, а второй будет проверять есть ли изменения на сервере. разделим на два варрианта
1) показывать друзей на карте, вы открываете аппликацию и видите всех друзей на карте, в тот момент когда вы ее открыли осуществляется запрос на сервер, и сервер возвращает список координат всех друзей. так же, пока аппликация открыта, каждые например 20 секунд нужно послылать повторный запрос(это и есть поллинг)
2) сообщение серверу о текущем местоположении, тут несколько варриантов, можно отслеживать изменения джипиэс, или тоже отсылать текущие координаты какой то промежуток времени, например раз в пол часа.

на сервере нужно всю эту логику прописать тоже, например каждый пользователь должен держать в массив со списком друзей и их координатами, при чем координаты должны обновляться
2
Alex_Fedor
42 / 42 / 5
Регистрация: 20.01.2015
Сообщений: 279
30.10.2016, 15:50 8
Цитата Сообщение от kirich iz Che Посмотреть сообщение
звучит сложно и нагруженно
Ну почему с некоторой периодичностью в фоновом процессе определяем где находимся и пишем в БД. Можно сделать так чтобы старые записи удалялись. Или скажем с автобусом. Начальная точка, конечная точка и названия улицы. Можно писать новую координату, если от последней удалился на сколько то метров
1
kirich iz Che
0 / 0 / 1
Регистрация: 29.03.2010
Сообщений: 25
30.10.2016, 18:02  [ТС] 9
Ага, теперь становится более понятно. Попробую пока написать чисто для одного устройства (того на которое установлено), там думаю будет вырисовываться.

Спасибо за ответы.
Не закрывайте тему пожалуйства, буду тут отписываться по ходу работы
0
xaat
43 / 16 / 6
Регистрация: 05.12.2015
Сообщений: 65
30.10.2016, 19:29 10
Цитата Сообщение от kirich iz Che Посмотреть сообщение
А вот например в яндекс.транпорт берется точка по gps в автобусе и она по карте едет. Это постоянно обновление базы происходит?
звучит сложно и нагруженно
Берешь два измерения долготы, отнимаешь одно от другого, если модуль разности, больше заданного тобой числа, отправляешь новую позицию.
0
ole_zha
21 / 21 / 7
Регистрация: 11.09.2015
Сообщений: 109
03.11.2016, 07:02 11
Просто возьмите бд и апдейтите значения пользователя из приложения согласно gps каждую минуту к примеру
id name lat lng
1 User1 45 -12
Так же каждую минуту парсите это значение.
Но не забывайте, что если меток на карте много , лучше использовать группировку.

В яндекс транспорте используется предиктивная аналитика.
Например автобус едет тут
А----О---------------Б
В картах он будет дальше от точки Б, т.к существует много факторов (пинг сервера, соединение телефона с инетом,качество оборудования gps в автобусе,интервал обновления БД) соостветственно данные доходят до вас устаревшие
А--О-----------------Б

Но если например автобус стоит на светофоре
А----О---------------Б
То на картах он будет медленно но двигаться ближе к точке Б
А----------О---------Б

Обусловленно это тем, что приложение берет в расчет эти факторы и подгоняет значения предполагая что автобус "где-то тут"
Так же и с яндекс пробками, они на половину берутся с наблюдений realtime и базой знаний.
Делается это в целях экономии ресурсов скорее всего.
1
kirich iz Che
0 / 0 / 1
Регистрация: 29.03.2010
Сообщений: 25
03.11.2016, 07:26  [ТС] 12
Спасибо за совет.
Думаю в масштабах приложения делаемого одним человеком, делать нейронную сеть для пробок и тд врядли нужно
Точность в пару сотен метров думаю меня устроит
0
ole_zha
21 / 21 / 7
Регистрация: 11.09.2015
Сообщений: 109
03.11.2016, 07:48 13
У меня похожая затея но только не с gps и не связана с передвижениями) я делаю веб-приложение, если тебе поможет чем нибудь
Google maps api + external link
Там есть ссылки на другие треды, которые я решил, там и кластеризация и определение геоположения и парсинг с бд данных)
1
kirich iz Che
0 / 0 / 1
Регистрация: 29.03.2010
Сообщений: 25
03.11.2016, 07:54  [ТС] 14
Странно что вам никто не ответил не разу в темах
В принципе общение в веб приложении и андроидом очень похоже, покурю ваш код, может чего смогу почерпнуть. Большое спасибо.
з.ы. насколько я сталкивался, кластеризация это уже анализ данных, для чего вы ее используете в своем веб приложении?
0
ole_zha
21 / 21 / 7
Регистрация: 11.09.2015
Сообщений: 109
03.11.2016, 08:07 15
Marker Clusterer
Вот это очень наглядный пример скорости загрузки от гугла)

В кратце, если приложение имеет большую плотность меток на карте, это очень плохо по ряду причин:
- плохо воспринимается каша, даже не смотря на то, что все метки выстраиваются на карте по z-index'у
- скорость загрузки карты начнет страдать
- для приложений с webview это вообще смертельно)
- впринципе отображение кучи геометок сказывается на производительности как и так и мобилок

Ну а никто не ответил я даже не знаю почему, то ли решил быстро проблему, то ли никто не курит гуглокарты
1
Sardinia
1 / 1 / 1
Регистрация: 27.06.2016
Сообщений: 101
08.11.2016, 15:36 16
ole_zha, какие есть пути оптимизации (обхода и т.д.) для мобильных приложений, где высокая плотность меток на карте играет определяющую роль, можешь подсказать? Хочу на основе гуглокарт запустить)
0
ole_zha
21 / 21 / 7
Регистрация: 11.09.2015
Сообщений: 109
17.11.2016, 08:20 17
Sardinia, я, к сожалению, не знаю конкретных средств для мобильных платформ, но алгоритм могу привести:
1)определение boundings карты юзера
2)генерация json с метками, lat и lng выходят чуть больше , чем диапазон boundings
3)инициализация карты с кластеризацией
ну это так, первое что пришло в голову наиболее рациональное.

Если метки статичны, можно попробовать переопределить группы меток на сервере на каждый кластер и зум карты и выдавать юзеру уже заранее готовые группы меток.
На хабре хорошая статья ссылка
А так же на гиктайме статья про переопределение меток на сервере ссылка
1
17.11.2016, 08:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2016, 08:20

Приложение со всеми библиотеками, или как запустить приложение без установленного FW
Извините, если для профессионалов эта тема покажется уже заезженной, но я не...

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

консольное приложение (при запуске приложение открывалось на весь экран)
Как сделать, чтобы при запуске приложение открывалось на весь экран?


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

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

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