Android-динамически нарисованное, кликабельное наложение карты? - PullRequest
1 голос
/ 05 марта 2012

Я пытаюсь написать приложение для Android, которое позволит пользователю искать общий пункт назначения (например, «автозаправочная станция») и получить до 5 ближайших мест на выбор.Результаты на экране будут отображать местоположение пользователя в центре, а возможные варианты назначения будут обозначены маркерами.

Хитрость в том, что я не хочу масштабировать карту из ее начального масштаба, и поэтому некоторые из возможных пунктов назначения могут не отображаться на экране.Я хочу динамически нарисовать интерактивный указатель направления (например, стрелку), который исходит от местоположения пользователя и указывает на любое место за пределами экрана.Если есть несколько мест вне экрана, я бы, вероятно, хотел бы масштабировать длины стрелок, чтобы указать относительные расстояния.Если пользователь нажимает на стрелку, он должен быть «телепортирован» за пределы экрана.

Есть мысли о том, как лучше всего это реализовать?Единственная информация, которую я нашел на оверлеях, использует статические файлы (большинство оверлеев кажутся просто файлами .PNG для маркеров; в одном примере был маршрут, который был нарисован из файла XML).Мне нужно рассчитать стрелку на основе направления к месту назначения (направление точек стрелки) и относительного расстояния до этого места (длина стрелки), поэтому наложение - это то, что мне нужно придумать во время выполнения.

Я думаю, что основной проблемой является рисование кликабельных стрелок, но возникает еще один вопрос: должен ли я искать с помощью API Карт Google или эта работа больше подходит для API Google Адресов?

Спасибо!

1 Ответ

0 голосов
/ 05 марта 2012

Полагаю, нам следует приостановить телепортацию, пока проблема динамически нарисованного кликабельного наложения не будет решена!

Динамически нарисованное, кликабельное наложение - это просто подкласс Overlay. Вы будете переопределять один или оба метода draw() для рендеринга ваших стрелок с помощью Canvas 2D-API рисования. Вы переопределите onTap(), чтобы получать уведомления о нажатиях на карте, чтобы увидеть, постукивали ли они по стрелке. Вы добавляете оверлей к MapView через addOverlays().add().

Большинство оверлеев кажутся просто .PNG файлами для маркеров

Обычно это ItemizedOverlay классы. Это гораздо проще в реализации, особенно если вы один из тех разработчиков (таких как я), который очень хорошо относится к Canvas. Однако, по всей вероятности, вы не можете достичь желаемого с ItemizedOverlay.

Мне нужно рассчитать стрелку на основе направления к пункту назначения (направление стрелок указывает) и относительного расстояния до этого места (длина стрелки), поэтому наложение - это то, что мне нужно придумать при беге время.

Правильно. Вы можете использовать Projection, чтобы помочь преобразовать между пиксельным пространством и гео-пространством (широтой и долготой), если необходимо.

Обратите внимание, что все это предполагает, что вы пытаетесь использовать MapActivity и MapView. Вы также можете использовать WebView или простой браузер для отображения своих собственных карт на основе JavaScript, если хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...