Главная » Разработка для Android » Добавление Представлений на карту

0

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

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

Вы реализуете  оба механизма  для добавления  Представлений на карту, вызывая  метод addView,  принадлежащий MapView.  Как правило,  это де- лается внутри методов onCreate или onRestore при реализации Активности MapActivity. Передайте  Представление, которое хотите добавить  на карту, и параметры  разметки, которые желаете использовать.

Параметры MapView.LayoutParams, которые передаются в метод addView, определяют место на карте, куда Представление попадет.

Чтобы добавить новое Представление на карту относительно экрана, за- дайте новый объект MapView.LayoutParams, включив в него аргументы, от- вечающие за его высоту и ширину, экранные координаты x/y, а также способ выравнивания для позиционирования, как показано в листинге 8.14.

Листинг 8.14. Добавление Представления на карту

int y = 10; int x = 10;

EditText editText1 = new EditText(getApplicationContext());

editText1.setText("Screen Pinned");

MapView.LayoutParams screenLP;

screenLP = new MapView.LayoutParams(MapView.LayoutParams.WRAP_CONTENT, MapView.LayoutParams.WRAP_CONTENT, x, y, MapView.LayoutParams.TOP_LEFT);

mapView.addView(editText1, screenLP);

Чтобы  закрепить  Представление на карте относительно физического местоположения, передайте конструктору LayoutParams четыре аргумента: высоту, ширину, объект GeoPoint, к которому будет привязано Представле- ние, а также выравнивание разметки, как показано в листинге 8.15.

Листинг 8.15. Закрепление Представления за географическим местоположением

Double lat = 37.422134*1E6; Double lng = -122.084069*1E6;

GeoPoint geoPoint = new GeoPoint(lat.intValue(), lng.intValue());

MapView.LayoutParams geoLP;

geoLP = new MapView.LayoutParams(MapView.LayoutParams.WRAP_CONTENT, MapView.LayoutParams.WRAP_CONTENT, geoPoint, MapView.LayoutParams.TOP_LEFT);

EditText editText2 = new EditText(getApplicationContext());

editText2.setText("Location Pinned");

mapView.addView(editText2, geoLP);

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

Чтобы удалить Представление из MapView, вызовите метод removeView, передав ему в качестве аргумента экземпляр Представления, которое хотите удалить, как показано ниже:

mapView.removeView(editText2);

Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).

По теме:

  • Комментарии