附近的AR POI重叠

时间:2018-11-12 10:05:40

标签: android augmented-reality android-augmented-reality point-of-interest

我正在Android应用程序中创建增强现实,其中我几乎没有POI,而是将它们放在“相机坐标”上,现在唯一的问题是附近的坐标重叠。我想对附近的坐标进行聚类。有没有办法做到这一点。我正在使用此AR Project

以下是OnDraw()方法的代码。

 @Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    if (currentLocation == null) {
        return;
    }

    final int radius = 30;
    Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
    paint.setStyle(Paint.Style.FILL);
    paint.setColor(Color.WHITE);
    paint.setTypeface(Typeface.create(Typeface.DEFAULT, Typeface.NORMAL));
    paint.setTextSize(60);

    for (int i = 0; i < arPoints.size(); i ++) {
        float[] currentLocationInECEF = LocationHelper.WSG84toECEF(currentLocation);
        float[] pointInECEF = LocationHelper.WSG84toECEF(arPoints.get(i).getLocation());
        float[] pointInENU = LocationHelper.ECEFtoENU(currentLocation, currentLocationInECEF, pointInECEF);

        float[] cameraCoordinateVector = new float[4];
        Matrix.multiplyMV(cameraCoordinateVector, 0, rotatedProjectionMatrix, 0, pointInENU, 0);

        // cameraCoordinateVector[2] is z, that always less than 0 to display on right position
        // if z > 0, the point will display on the opposite
        if (cameraCoordinateVector[2] < 0) {
            float x  = (0.5f + cameraCoordinateVector[0]/cameraCoordinateVector[3]) * canvas.getWidth();
            float y = (0.5f - cameraCoordinateVector[1]/cameraCoordinateVector[3]) * canvas.getHeight();

            canvas.drawCircle(x, y, radius, paint);
            canvas.drawText(arPoints.get(i).getName(), x - (30 * arPoints.get(i).getName().length() / 2), y - 80, paint);
        }
    }
}

0 个答案:

没有答案