ħ 我编写了一个代码来在MapField上绘制两个自定义位置标记。但是当我放大和缩小时,位置标记具有相同的大小,我希望位置标记根据缩放级别进行调整。有人可以请我帮忙吗?
BR, Suppi
编辑:
到目前为止能够做到这一点,
mPointDest = new XYRect[mPoints.length];
for (int i = 0; i < mPoints.length; i++) {
XYPoint fieldOut = new XYPoint();
convertWorldToField(mPoints[i], fieldOut);
mIcon = Bitmap.getBitmapResource("location.png");
int imgW = mIcon.getWidth();
int imgH = mIcon.getHeight();
mPointDest[i] = new XYRect(fieldOut.x - imgW / 2,
fieldOut.y - imgH, imgW, imgH);
graphics.drawBitmap(mPointDest[i], mIcon, 0, 0);
和缩放:
protected boolean keyChar(char character, int status, int time)
{
// 'i' will zoom in.
if (character == 'i')
{
mMapField.setZoom(Math.max(mMapField.getZoom() - 1, mMapField.getMinZoom()));
return true;
}
// 'o' will zoom out
if (character == 'o')
{
mMapField.setZoom(Math.min(mMapField.getZoom() + 1, mMapField.getMaxZoom()));
return true;
}
return super.keyChar(character, status, time);
}
此后我想知道如何根据缩放级别调整位图。有人可以给我一些想法吗?
答案 0 :(得分:1)
缩放仅影响地图本身。如果要更改自己图形的大小,则需要自己手动缩放。例如,您可以在项目中包含多个大小的“location.png”资源,然后根据缩放级别选择合适的资源,或使用Bitmap.scaleInto()
方法动态缩放图形。 / p>
请注意,即时方法会产生比包含原始图形的多个尺寸更低质量的结果(好吧,我假设你有一个高分辨率原件,你正在缩小以包含在你的项目中)