我想繪製地圖上位置的圖釘。該地圖是可縮放和平移的,這要歸功於我正在使用的圖書館中的該課程:優化視圖的抽取方法
https://github.com/davemorrissey/subsampling-scale-image-view。
我擴展subsamplingimageview類來繪製圖像。地圖 的分辨率是2494乘2048像素,每個像素是一個座標。當活動可見時,只有整個地圖的一部分可見。
問題: 我需要在地圖上繪製250個針腳,我試過這樣,但縮放和平移地圖的表現不佳。
我如何繪製地圖上的別針而不會丟失性能? 我試着對圖像本身的位圖繪製引腳,但我不能忍受與銷圖像地圖視圖,除非它在資產文件夾,但該文件夾是隻讀的...
protected override void OnDraw(Canvas canvas)
{
base.OnDraw(canvas);
// Don't draw pin before image is ready so it doesn't move around during setup.
if (!IsImageReady)
{
return;
}
Paint paint = new Paint();
paint.AntiAlias = true;
foreach (Location location in locations)
{
if (location != null && pin != null)
{
PointF vPin = SourceToViewCoord(new PointF((float)location.X , (float) location.Y ));
float vX = vPin.X - (pin.Width/2);
float vY = vPin.Y - pin.Height;
canvas.DrawBitmap(pin, vX, vY, paint);
if (pinPushed)
{
if (location != null && info != null)
{
PointF vInfo = SourceToViewCoord (new PointF((float)location.X , (float) location.Y ));
float vInfoX = vInfo.X - (info.Width/2) + (int)ConvertDpToPix(8);//8 pixels cause image is not in the middle
float vInfoY = vInfo.Y - info.Height;
//canvas.DrawBitmap (info, vX, vY, paint);
//float w2 = info.Width;
//float h2 = info.Height;
canvas.DrawBitmap (textBalloonBitmap, vInfoX, vInfoY, paint);
}
}
}
}