Я хочу сделать приложение для Android с картой, которая дает указания, но не с Google Maps - PullRequest
7 голосов
/ 14 декабря 2011

Я хочу создать приложение для Android, которое загружает созданную мной карту внутри здания. Я хочу, чтобы он указывал направление между одной комнатой в другую И между этажами, если это возможно.

Я бы хотел, чтобы карта была масштабируемой и интерактивной. То есть вы можете нажать, где вы находитесь, и куда вы хотите пойти, и приложение предоставит направления. ИЛИ вы вводите в текстовые поля, в какой комнате вы находитесь, и куда вы хотите пойти, и снова указываются указания.

Я наткнулся на то, что позволило вам использовать карту с открытым исходным кодом и добавлять свои собственные узлы в каждый угол или место ссылки. Но я не могу найти сайт больше, после часа поиска в Google.

Кто-нибудь знает, как я мог это сделать?

Ответы [ 4 ]

3 голосов
/ 14 декабря 2011

Это один из тех случаев, когда идея звучит просто, но на самом деле это не так.Есть много задач, которые нужно решить, о некоторых уже говорили.

1) Как смоделировать офис.Это нужно сделать так, чтобы вам было легко моделировать, но файл маленький.Он должен быть в формате, понятном вашему алгоритму поиска пути.Это означает, что при разработке поиска пути вы будете вносить изменения в данные.

2) Поиск / ввод местоположения.Сделано аппаратно (gps его не обрежет) или пользователь говорит, где они.Это можно сделать с помощью NFC и меток, размещенных в офисе, не идеальное решение, метки должны быть видны.Пользователь может ввести свое местоположение, но они могут быть потеряны и не знать, где они находятся.

3) Как представить данные, вы можете написать волшебное 3D-приложение, показывающее невыполнимый план здания.Это будет шесть месяцев работы в нем самостоятельно!Помните, ваша карта в 3D, дорожные карты, как правило, 2D.(с некоторыми перелетами ...)

4) Отслеживание прогресса.Приложение действительно должно знать, как у вас дела, поэтому, если вы уйдете с маршрута, оно скажет вам вернуться.Это снова будет трудно достичь в помещении.Отслеживание прогресса - это одна из областей, на которую PND (персональное навигационное устройство) тратит время, поскольку это действительно влияет на доверие пользователей к программному обеспечению.

Поработав в TomTom, все, что я могу сказать, вы могли бы заниматься этим годами.

Поскольку это проект коллажа, могу ли я предложить более простой проект?

Сделать это с 2D-картой, простой картой на основе сетки, немного похожей на классическую мышь в задаче лабиринта.Реализуйте A * для поиска пути.После этого вы можете, если у вас есть время, продлить его для своего первоначального плана.

Книга, которую я нашел очень хорошей в прошлом, - это "Программирование AI игры на примере".ISBN 1-55622-078-2.Глава 8 посвящена поиску путей и содержит очень хорошую часть об A *.

Удачи.:)

2 голосов
/ 14 декабря 2011

Хотя это может быть не тот ответ, который вы ищете:

Вы всегда можете написать приложение, которое делает это.Если вы уже готовы разместить узлы на карте, вы можете гипотетически написать программу, которая использует (в основном используемый) алгоритм прохождения игры, такой как A *, и определить маршрут оттуда.Это было бы сложно, но я бы подумал, что, разместив узлы и отобразив их с векторной стоимостью, связанной с векторами (возможно, измеренной в футах / метрах или чем-то в этом роде), вы могли бы установить это с помощью A *...

Трудно сказать.Я попробовал быстрый Google и тоже вышел пустым.

1 голос
/ 14 декабря 2011

Я столкнулся с такой же проблемой во время моего магистерского проекта. Тем не менее, мое решение не совсем завершено, но именно так я и планировал. Я так или иначе не мог осуществить это полностью из-за различных ограничений. Это может показаться сложным, но я не совсем уверен, как это выразить.

  1. Храните карты статически, а не динамически - я имею в виду картинки, которые появляются, когда кто-то хочет перейти из одной комнаты в другую или с одного этажа на другой. Динамическая маршрутизация немного сложна. Храните картинки перед рукой, чтобы они всплыли.

  2. Разработать алгоритм кратчайшего пути, что-то вроде алгоритма Дейкстры. Вы получите готовые Java-программы для выполнения этого алгоритма. Используя это, вы можете получить маршруты. Как только карта станет доступной, сделать ее кликабельной и добавить параметры масштабирования не должно быть большой проблемой.

Как-то объединить оба шага (извините, здесь нет кода, потому что я сам не смог придумать один). Как сказал выше Ричард, я задумал реализовать NFC (весь мой проект был основан на этом). NFC - это в основном технология RFID и, следовательно, беспроводная связь. Вы можете использовать 802.11 b / g / n для реализации его сетевой части. Если вам нужна дополнительная помощь, пожалуйста, дайте мне знать. Поможет сколько смогу.

Всего наилучшего.

1 голос
/ 14 декабря 2011

Вы можете создать MapActivity , в котором может храниться MapView ( MapView не может быть встроен ни в одну другую деятельность ), что является честным деломинтерактивная карта, но она не полностью полнофункциональная.

MapView в основном предназначен для отображения карты определенной области с пользовательскими наложениями на нее.Вы можете установить фокус карты, уровень масштабирования, если он отображает данные о трафике, и несколько других незначительных опций.Но помимо этого вам придется создать наложение маршрута самостоятельно.И нет никакой функции поворота за поворотом или чего-то еще.Это просто «глупые» наложения.

Google DID , однако недавно обновили приложение Google Maps, добавив карты для помещений и навигацию.Они предоставляют сайт, на который можно перейти, и отправляют план здания вашего здания, чтобы его можно было добавить в официальное приложение.

После официального добавления плана этажа вы можетепросто запустите официальное приложение, чтобы выполнить навигацию за вас с помощью намерения, подобного следующему:

Intent intent = new Intent(android.content.Intent.ACTION_VIEW, 
Uri.parse("http://maps.google.com/maps?saddr=20.344,34.34&daddr=20.5666,45.345"));
startActivity(intent);
...