Если я правильно понимаю ваш вопрос, вам нужно: сначала показать карту * stati c, затем, после нажатия, показать ту же карту stati c, но с несколькими полигонами на ней. Как и в случае с викториной, когда у первого (вопроса) Activity
пользователя запрашивается правильное место объекта, а у второго (ответа) Activity
отображается правильное место объекта.
Для этого вам необходимо:
1) привязать изображение карты c к геодезии c координат;
2) внедрить GoogleMap.addPolygon()
метод рисования на нем полигона.
Обе эти задачи в общем-то не тривиальны, поэтому проще всего это сделать:
1) Если вы хотите получить быстрый правильный ответ, показанный во втором упражнении, запросите и получите от Stati c Map API в вашей первой Activity
двух картах: первая - просто с изображением карты, а вторая - та же карта, но уже с полигонами. Первое изображение, которое вы показываете в этом упражнении, а второе Activity
(которое вы показываете после щелчка), вы показываете второе изображение уже с полигонами. Или запросите второе изображение за секунду Activity
, если хотите показать ответ только для нажатых карт. В Официальной документации вы можете найти, как получить статическое c изображение карты с полигоном на нем (взгляните на параметр path
):
https://maps.googleapis.com/maps/api/staticmap
?size=400x400¢er=40.653279,-73.959816&zoom=11
&path=fillcolor:0xAA000033%7Ccolor:0xFFFFFF00%7Cenc:}zswFtikbMjJzZ%7CRdPfZ}DxWvBjWpF~IvJnEvBrMvIvUpGtQpFhOQdKpz@bIx{A%7CPfYlvApz@bl@tcAdTpGpVwQtX}i@%7CGen@lCeAda@bjA%60q@v}@rfAbjA%7CEwBpbAd_@he@hDbu@uIzWcWtZoTdImTdIwu@tDaOXw_@fc@st@~VgQ%7C[uPzNtA%60LlEvHiYyLs^nPhCpG}SzCNwHpz@cEvXg@bWdG%60]lL~MdTmEnCwJ[iJhOae@nCm[%60Aq]qE_pAaNiyBuDurAuB}}Ay%60@%7CEKv_@?%7C[qGji@lAhYyH%60@Xiw@tBerAs@q]jHohAYkSmW?aNoaAbR}LnPqNtMtIbRyRuDef@eT_z@mW_Nm%7CB~j@zC~hAyUyJ_U{Z??cPvg@}s@sHsc@_z@cj@kp@YePoNyYyb@_iAyb@gBw^bOokArcA}GwJuzBre@i\tf@sZnd@oElb@hStW{]vv@??kz@~vAcj@zKa%60Atf@uQj_Aee@pU_UrcA
&key=YOUR_API_KEY
Теперь карты Stati c URL-адреса API ограничены размером 8192 символа . Поэтому, если у вашего многоугольника много точек, вы должны использовать кодированный формат ломаной линии для точек многоугольника. Вы можете закодировать свой полигон с помощью PolyUtil.encode()
метода Maps SDK для Android Utility Library .
2) (ИМХО лучше) используйте MapView/MapFragment
Lite Mode Maps SDK для Android, который может обслуживать растровое изображение карты, предлагая ограниченную интерактивность для пользователя. В этом режиме поддерживаются полилинии, и вы можете сэкономить трафик c. В этом случае вы должны поместить MapView' or 'MapFragment
в первом упражнении и MapView/MapFragment
с теми же настройками (размер, положение камеры и т. Д. c.) Во втором упражнении, а когда пользователь нажимает на карту первого занятия, просто нарисуйте многоугольник карты второй и покажи это. Функциональность облегченного режима для фигур соответствует полному API :
GoogleMap map;
// ... get a map.
// Add a triangle in the Gulf of Guinea
Polygon polygon = map.addPolygon(new PolygonOptions()
.add(new LatLng(0, 0), new LatLng(0, 5), new LatLng(3, 5), new LatLng(0, 0))
.strokeColor(Color.RED)
.fillColor(Color.BLUE));