private static void createDynamicElements(final Geopoint center, final GeoItemLayer<String> layer, final int index) {
        //index runs from 0 to 359, then back to 0

        final int angle = (index * 20) % 360;

        final double distance = 20; //km

        //dynamic test data
        final GeoItem poly = GeoPrimitive.builder().setType(GeoItem.GeoType.POLYLINE).addPoints(
                center.project(angle, distance),
                center.project((angle + 90) % 360, distance),
                center.project((angle + 180) % 360, distance),
                center.project((angle + 270) % 360, distance),
                center.project(angle, distance)).build();
        final GeoItem point = GeoPrimitive.createPoint(center.project(angle, distance), GeoStyle.builder().setStrokeColor(Color.GREEN).build());
        final GeoItem group = GeoGroup.builder().addItems(point, poly).build();

        layer.put(TESTLAYER_KEY_PREFIX + "Quad", group);

        final GeoItem flowMarker = GeoPrimitive.createMarker(center.project(angle, distance * 0.8), GeoIcon.builder()
                .setBitmap(createBitmap(R.drawable.type_event))
                .setRotation(angle).build());
        layer.put(TESTLAYER_KEY_PREFIX + "FlowMarker", flowMarker);

        //a series of markers with changing icons
        final Geopoint startDynamicMarkers = center.project(180, 80);
        for (int i = 0; i < 20; i++) {
            final GeoPrimitive iconI = GeoPrimitive.createMarker(startDynamicMarkers.project(90, 4 * i), ICON_ALL[(index + i) % ICON_ALL.length]);
            layer.put(TESTLAYER_KEY_PREFIX + "dynamicIconMarker-" + i, iconI);
        }



    }
This is a test layer to experiment with unified geoitem layers. It is only activated with a specific developer setting
main/src/main/java/cgeo/geocaching/unifiedmap/geoitemlayer/GeoItemTestLayer.java