Java 如何在ImageView Android上添加标记/Pin?

Java 如何在ImageView Android上添加标记/Pin?,java,android,imageview,android-canvas,marker,Java,Android,Imageview,Android Canvas,Marker,我想询问如何在imageView上实现或添加标记。 我使用svglib渲染了一个SVG,并使用了customImageView,这样我就可以缩放和平移图像 这是我如何使用customImageView的代码 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { SVG svg;

我想询问如何在imageView上实现或添加标记。 我使用svglib渲染了一个SVG,并使用了customImageView,这样我就可以缩放和平移图像

这是我如何使用customImageView的代码

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        SVG svg;
        switch (mNum) {

        case 1:
            svg = SVGParser.getSVGFromResource(getResources(), R.raw.t1);
            break;
        case 2:
            svg = SVGParser.getSVGFromResource(getResources(), R.raw.t2);
            break;
        case 3:
            svg = SVGParser.getSVGFromResource(getResources(), R.raw.t3);
            break;
        case 4:
            svg = SVGParser.getSVGFromResource(getResources(), R.raw.t4);
            break;
        default:
            svg = SVGParser.getSVGFromResource(getResources(),
                    R.raw.android);

        }

        View v = inflater.inflate(R.layout.hello_world, container, false);
        View tv = v.findViewById(R.id.text);
        imageView = (GestureImageView) v.findViewById(R.id.imageView1);
        imageView.setStrict(false);
        imageView.setStartingScale(lastScale);
        // if(lastXPosition!=0 && lastYPosition!=0)
        imageView.setStartingPosition(lastXPosition, lastYPosition);
        // Log.i("tag",
        // "lastXPosition" + lastXPosition);
        // Log.i("tag",
        // "lastYPosition" + lastYPosition);
        // Log.i("tag",
        // "lastScale" + lastScale);
        // imageView.setRotation(45);
        // imageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
        if (Build.VERSION.SDK_INT > 15)
            imageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
        imageView.setImageDrawable(svg.createPictureDrawable());
        ((TextView) tv).setText("Floor number: " + mNum);
        imageView.setBackgroundColor(Color.WHITE);
        // tv.setBackgroundDrawable(getResources().getDrawable(
        // android.R.drawable.gallery_thumb));
        // imageView.setScaleType(ScaleType.CENTER);
        // ((GestureImageView)imageView).setScale(x);
        return v;
    }
现在我想添加一个pin,就像下面的图片一样


(来源:)

但我的问题是,当我在标记周围平移时,我添加的标记没有与图像SVG绑定,因此在平移时留在某个位置

这是我的密码。。。 注:尚未定稿。。。我仍然在寻找一种方法来让这个工作,我正在使用放大的imageview作为地图

@Override
protected void onDraw(Canvas canvas) {

    if (layout) {
        if (drawable != null && !isRecycled()) {
            canvas.save();

            float adjustedScale = scale * scaleAdjust;

            canvas.translate(x, y);

            if (rotation != 0.0f) {
                canvas.rotate(rotation);
            }

            if (adjustedScale != 1.0f) {
                canvas.scale(adjustedScale, adjustedScale);
            }

            drawable.draw(canvas);

            canvas.restore();
        }

        if (drawLock.availablePermits() <= 0) {
            drawLock.release();
        }
    }

    // ---add the marker---
    Bitmap marker = BitmapFactory.decodeResource(getResources(),
            R.drawable.search_marker_icon);
    canvas.drawBitmap(marker, 40, 40, null);
    Paint mPaint = new Paint();
    mPaint.setColor(Color.RED);
    canvas.drawCircle(60, 60, 5, mPaint);
    super.onDraw(canvas);
} 
@覆盖
受保护的void onDraw(画布){
如果(布局){
if(drawable!=null&!isRecycled()){
canvas.save();
浮动调整比例=比例*比例公正;
canvas.translate(x,y);
如果(旋转!=0.0f){
画布。旋转(旋转);
}
如果(调整后的刻度!=1.0f){
画布.比例(adjustedScale,adjustedScale);
}
可绘制。绘制(画布);
canvas.restore();
}

如果(drawLock.availablePermits()Android视图中类似HTML映射元素的实现:

  • 在布局中支持图像作为可绘制或位图
  • 允许使用xml格式的区域标记列表
  • 允许使用剪切和粘贴HTML区域标记到资源xml(即,能够获取HTML地图和图像,并以最少的编辑使用它)
  • 如果图像大于设备屏幕,则支持平移
  • 支持收缩缩放
  • 当一个区域被点击时支持回调
  • 支持将注释显示为气泡文本,并在点击气泡时提供回调
尝试此链接,您将发现您的解决方案可绘制。绘制(画布); //---添加标记--- 位图标记=BitmapFactory.decodeResource(getResources(), R.可绘制。搜索(标记图标); drawBitmap(marker,40,40,null); Paint mPaint=新油漆(); mPaint.setColor(Color.RED); 画布.画圈(60,60,5,mPaint); canvas.restore(); }
if(drawLock.availablePermits()这是一个很好的用于显示图像的库,它支持缩放/平移和在图像上添加图钉

还没有……我目前正在处理程序的某些部分……我会在找到答案后发布答案solution@dicenice你有解决方案吗?我也有同样的问题(我想像这样实现同样的问题)@dicenice你是如何将
infoWindow
添加到这个标记的?你能像这样发送示例项目吗?因为我也想将pinmark图像添加到楼层平面图中..请帮助我。@dicenice我需要你的帮助兄弟。我确实需要同样的功能,但是当我缩放图像标记位置时发生了变化。你能帮助我吗?我需要你的帮助'如果你能发布更多与此相关的代码,那将是一个很大的帮助。特别是GestureImageView类。我一直试图找到解决此问题的方法。因此,请提供帮助。bro你能帮助我解决这个问题吗?我如何向SubsampleScaleImageView对象添加接点?请查看他提供的PinView示例。这是最好的示例之一我找到的图书馆,谢谢@signed指出!
 drawable.draw(canvas);

// ---add the marker---
Bitmap marker = BitmapFactory.decodeResource(getResources(),
        R.drawable.search_marker_icon);
canvas.drawBitmap(marker, 40, 40, null);
Paint mPaint = new Paint();
mPaint.setColor(Color.RED);
canvas.drawCircle(60, 60, 5, mPaint);


        canvas.restore();
    }

    if (drawLock.availablePermits() <= 0) {
        drawLock.release();
    }
}
 super.onDraw(canvas);
}