Настроить маркер местоположения на увеличение и уменьшение масштаба в Mapfield
H Я написал код для рисования двух пользовательских маркеров местоположения на 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);
}
После этого я задаюсь вопросом, как перейти к настройке растрового изображения на основе уровня масштабирования. Может кто-нибудь, пожалуйста, дайте мне идею??
1 ответ
Масштабирование влияет только на саму карту. Если вы хотите изменить размер вашей собственной графики, вам нужно будет вручную масштабировать их. Например, вы можете либо включить в свой проект ресурс "location.png" нескольких размеров, а затем выбрать подходящий в зависимости от уровня масштабирования, либо использовать Bitmap.scaleInto()
метод для увеличения вашего графика на лету.
Обратите внимание, что метод "на лету" приведет к более низкому качественному результату, чем включение оригиналов в нескольких размерах (я предполагаю, что у вас есть оригинал с высоким разрешением, который вы уменьшаете для включения в свой проект).