geopackage-sdk/src/main/java/mil/nga/geopackage/tiles/features/DefaultFeatureTiles.java
private boolean drawPoint(BoundingBox boundingBox, ProjectionTransform transform, FeatureTileCanvas canvas, Point point, FeatureStyle featureStyle) {

        boolean drawn = false;

        Point webMercatorPoint = transform.transform(point);
        float x = TileBoundingBoxUtils.getXPixel(tileWidth, boundingBox,
                webMercatorPoint.getX());
        float y = TileBoundingBoxUtils.getYPixel(tileHeight, boundingBox,
                webMercatorPoint.getY());

        if (featureStyle != null && featureStyle.hasIcon()) {

            IconRow iconRow = featureStyle.getIcon();
            Bitmap icon = getIcon(iconRow);

            int width = icon.getWidth();
            int height = icon.getHeight();

            if (x >= 0 - width && x <= tileWidth + width && y >= 0 - height && y <= tileHeight + height) {

                float anchorU = (float) iconRow.getAnchorUOrDefault();
                float anchorV = (float) iconRow.getAnchorVOrDefault();

                float left = x - (anchorU * width);
                float right = left + width;
                float top = y - (anchorV * height);
                float bottom = top + height;

                RectF destination = new RectF(left, top, right, bottom);

                Canvas iconCanvas = canvas.getIconCanvas();
                iconCanvas.drawBitmap(icon, null, destination, pointPaint);
                drawn = true;

            }

        } else if (pointIcon != null) {

            float width = this.density * pointIcon.getWidth();
            float height = this.density * pointIcon.getHeight();
            if (x >= 0 - width && x <= tileWidth + width && y >= 0 - height && y <= tileHeight + height) {
                Canvas iconCanvas = canvas.getIconCanvas();
                float left = x - this.density * pointIcon.getXOffset();
                float top = y - this.density * pointIcon.getYOffset();
                RectF rect = new RectF(left, top, left + width, top + height);
                iconCanvas.drawBitmap(pointIcon.getIcon(), null, rect, pointPaint);
                drawn = true;
            }

        } else {

            Float radius = null;
            if (featureStyle != null) {
                StyleRow styleRow = featureStyle.getStyle();
                if (styleRow != null) {
                    radius = this.density * (float) (styleRow.getWidthOrDefault() / 2.0f);
                }
            }
            if (radius == null) {
                radius = this.density * pointRadius;
            }
            if (x >= 0 - radius && x <= tileWidth + radius && y >= 0 - radius && y <= tileHeight + radius) {
                Paint pointPaint = getPointPaint(featureStyle);
                Canvas pointCanvas = canvas.getPointCanvas();
                pointCanvas.drawCircle(x, y, radius, pointPaint);
                drawn = true;
            }

        }

        return drawn;
    }
private boolean drawPoint(BoundingBox boundingBox, ProjectionTransform transform, FeatureTileCanvas canvas, Point point, FeatureStyle featureStyle) {

        boolean drawn = false;

        Point webMercatorPoint = transform.transform(point);
        float x = TileBoundingBoxUtils.getXPixel(tileWidth, boundingBox,
                webMercatorPoint.getX());
        float y = TileBoundingBoxUtils.getYPixel(tileHeight, boundingBox,
                webMercatorPoint.getY());

        if (featureStyle != null && featureStyle.hasIcon()) {

            IconRow iconRow = featureStyle.getIcon();
            Bitmap icon = getIcon(iconRow);

            int width = icon.getWidth();
            int height = icon.getHeight();

            if (x >= 0 - width && x <= tileWidth + width && y >= 0 - height && y <= tileHeight + height) {

                float anchorU = (float) iconRow.getAnchorUOrDefault();
                float anchorV = (float) iconRow.getAnchorVOrDefault();

                float left = x - (anchorU * width);
                float right = left + width;
                float top = y - (anchorV * height);
                float bottom = top + height;

                RectF destination = new RectF(left, top, right, bottom);

                Canvas iconCanvas = canvas.getIconCanvas();
                iconCanvas.drawBitmap(icon, null, destination, pointPaint);
                drawn = true;

            }

        } else if (pointIcon != null) {

            float width = this.density * pointIcon.getWidth();
            float height = this.density * pointIcon.getHeight();
            if (x >= 0 - width && x <= tileWidth + width && y >= 0 - height && y <= tileHeight + height) {
                Canvas iconCanvas = canvas.getIconCanvas();
                float left = x - this.density * pointIcon.getXOffset();
                float top = y - this.density * pointIcon.getYOffset();
                RectF rect = new RectF(left, top, left + width, top + height);
                iconCanvas.drawBitmap(pointIcon.getIcon(), null, rect, pointPaint);
                drawn = true;
            }

        } else {

            Float radius = null;
            if (featureStyle != null) {
                StyleRow styleRow = featureStyle.getStyle();
                if (styleRow != null) {
                    radius = this.density * (float) (styleRow.getWidthOrDefault() / 2.0f);
                }
            }
            if (radius == null) {
                radius = this.density * pointRadius;
            }
            if (x >= 0 - radius && x <= tileWidth + radius && y >= 0 - radius && y <= tileHeight + radius) {
                Paint pointPaint = getPointPaint(featureStyle);
                Canvas pointCanvas = canvas.getPointCanvas();
                pointCanvas.drawCircle(x, y, radius, pointPaint);
                drawn = true;
            }

        }

        return drawn;
    }
private boolean drawPoint ( BoundingBox boundingBox , ProjectionTransform transform , FeatureTileCanvas canvas , Point point , FeatureStyle featureStyle ) { boolean drawn = false ; Point webMercatorPoint = transform . transform ( point ) ; float x = TileBoundingBoxUtils . getXPixel ( tileWidth , boundingBox , webMercatorPoint . getX ( ) ) ; float y = TileBoundingBoxUtils . getYPixel ( tileHeight , boundingBox , webMercatorPoint . getY ( ) ) ; if ( featureStyle != null && featureStyle . hasIcon ( ) ) { IconRow iconRow = featureStyle . getIcon ( ) ; Bitmap icon = getIcon ( iconRow ) ; int width = icon . getWidth ( ) ; int height = icon . getHeight ( ) ; if ( x >= 0 - width && x <= tileWidth + width && y >= 0 - height && y <= tileHeight + height ) { float anchorU = ( float ) iconRow . getAnchorUOrDefault ( ) ; float anchorV = ( float ) iconRow . getAnchorVOrDefault ( ) ; float left = x - ( anchorU * width ) ; float right = left + width ; float top = y - ( anchorV * height ) ; float bottom = top + height ; RectF destination = new RectF ( left , top , right , bottom ) ; Canvas iconCanvas = canvas . getIconCanvas ( ) ; iconCanvas . drawBitmap ( icon , null , destination , pointPaint ) ; drawn = true ; } } else if ( pointIcon != null ) { float width = this . density * pointIcon . getWidth ( ) ; float height = this . density * pointIcon . getHeight ( ) ; if ( x >= 0 - width && x <= tileWidth + width && y >= 0 - height && y <= tileHeight + height ) { Canvas iconCanvas = canvas . getIconCanvas ( ) ; float left = x - this . density * pointIcon . getXOffset ( ) ; float top = y - this . density * pointIcon . getYOffset ( ) ; RectF rect = new RectF ( left , top , left + width , top + height ) ; iconCanvas . drawBitmap ( pointIcon . getIcon ( ) , null , rect , pointPaint ) ; drawn = true ; } } else { Float radius = null ; if ( featureStyle != null ) { StyleRow styleRow = featureStyle . getStyle ( ) ; if ( styleRow != null ) { radius = this . density * ( float ) ( styleRow . getWidthOrDefault ( ) / 2.0f ) ; } } if ( radius == null ) { radius = this . density * pointRadius ; } if ( x >= 0 - radius && x <= tileWidth + radius && y >= 0 - radius && y <= tileHeight + radius ) { Paint pointPaint = getPointPaint ( featureStyle ) ; Canvas pointCanvas = canvas . getPointCanvas ( ) ; pointCanvas . drawCircle ( x , y , radius , pointPaint ) ; drawn = true ; } } return drawn ; }
Draw the point on the canvas

@param boundingBox  bounding box
@param transform    projection transform
@param canvas       draw canvas
@param point        point
@param featureStyle feature style
@return true if drawn
Draw the point on the canvas