#java #android #maps
#java #Android #Карты
Вопрос:
Итак, я работаю над проектом для моей школы с группой, и мы думаем о внедрении способа получения списка преподавателей и сотрудников и возможности «отобразить их» или их офис на карте кампуса на Android. В настоящее время карта работает с функциями itemizedOverlays и увеличения и уменьшения масштаба.
Мой вопрос в том, когда кто-то, кто использует это приложение для Android, выбирает преподавателя и сотрудника, как я могу передать их информацию (которая будет просто их именем) в наш класс maps и использовать ее с itemizedOverlays?
мы будем передавать имя преподавателя ИЗ класса person В класс maps.
Комментарии:
1. Вы должны принять ответ, чтобы повысить свою репутацию или, по крайней мере, оценить усилия человека, который ответил на ваш вопрос.
Ответ №1:
Вы также могли бы использовать дополнительные параметры Intent, как описано здесь:
http://developer.android.com/reference/android/content/Intent.html
private long lat, lng;
//.. onCreate
lat = getIntent().getLongExtra("lat");
lng = getIntent().getLongExtra("lon");
//...
GeoPoint office = new GeoPoint(lat, lng);
OverlayItem oi = new OverlayItem(office, "", "");
itemizedOverlay.addOverlay(oi);
//.. and so on.
Одним нажатием вы можете запустить свое намерение карты следующим образом (‘i’ — это ваше намерение карты, а ‘t’ — ваш объект Teacher):
i.putExtra("lat", t.getPos().getLat());
i.putExtra("lng", t.getPos().getLng());
Комментарии:
1. Большое вам спасибо! Я собираюсь попробовать это и рассказать об этом нашей группе! Я люблю stackoverflow!
Ответ №2:
Извините, я не понимаю вашу точку зрения. Если вы хотите, чтобы конкретное оповещение отображалось при событии tap, вы могли бы расширить OverlayItem, чтобы у него был дополнительный параметр с вашим «Идентификатором пользователя» или что-то в этом роде. Затем с помощью метода onTap в оверлее получите Person, который соответствует этому идентификатору (после приведения вашего объекта, конечно). И соответствующим образом отобразить предупреждение.
То же самое происходит, если вы хотите отобразить наложение (или набор элементов наложения) в соответствии с ранее выбранным элементом. Это должно быть довольно просто: либо передать параметр конструктору CampusMap, либо (уродливый подход, но более быстрый) сохранить выбранный элемент в статическом классе и получить к нему доступ с карты.
Комментарии:
1. Что ж, у нас будет список преподавателей и сотрудников кампуса с их именами и фамилиями. Вы можете щелкнуть по ним, и тогда отобразится определенная информация о них. Он также будет иметь 4 варианта кнопок. Один из них называется «map it», и он покажет, где в кампусе находится кабинет преподавателя. Мой вопрос в том, как я могу передать эту информацию об учителях методу OnTap, я полагаю. Поскольку эта информация находится в классе, отличном от класса map.
2. Я понял. Просто передайте на карту либо полный класс, либо широту GPS. И добавьте дополнительный элемент наложения для этой широты. Вы могли бы даже создать новый конструктор для вашего класса MapView, который получает класс Teacher (с указанием его / ее должности в офисе) и распечатать его соответствующим образом.
3. Вы также могли бы использовать дополнительные параметры Intent, как описано здесь: developer.android.com/reference/android/content/Intent.html ` private long lat, lng; //.. onCreate lat = GetIntent().getLongExtra(«широта»); lng = GetIntent().getLongExtra(«длина»); //… GeoPoint office = новая геопункта (широта, lng); OverlayItem oi = новый OverlayItem(office, «», «»»); ItemizedOverlay.addOverlay(oi); // .. и так далее. ` Одним нажатием вы можете запустить свое намерение карты следующим образом (‘i’ — ваше намерение карты, а ‘t’ — ваш объект Teacher): ` i.putExtra («широта», т.е.getPos().getLat()); i.putExtra («lng», т.е.getPos().getLng()); `