Страница 1 из 1

Рисунок на Google Maps

Добавлено: 21 авг 2015, 10:15
MrBAD
Помогите разобраться. Необходимо на GoogleMaps нарисовать круг занимающий приблизительно 80% экрана по ширине. При изменении масштаба карты круг не должен меняться.

Вариант 1. Нарисовал свой PNG. При ширине экрана в 480 точек, круг почему то пришлось сделать 290 точек диаметром? Не понял почему (может это зависит от эмулятора еще?). И видно что он пиксельный (рисованный) грубый.

Вариант 2. Привязаться к масштабу карты. Рисовать круг средствами API Google Maps. Но там требуется диаметр в метрах. Получается надо все время пересчитывать сколько метров придется на всю ширину экрана в разных масштабах карты и разрешениях экрана - и рисовать исходя из этого.

Может есть другой вариант?
Заранее спасибо.

Re: Рисунок на Google Maps

Добавлено: 21 авг 2015, 11:19
Dark67
попробуй применить это
googleMap.getProjection().getVisibleRegion();

или тебе нужно "окошко", через которое видно карту?

Re: Рисунок на Google Maps

Добавлено: 21 авг 2015, 12:17
Mikhail_dev
Пару месяцев назад аналогичная задачка была, для геозон.
Надо сделать кастомную вьюшку, наподобие такой.
[syntax=java5]
public class CircleView extends View {

private int mColor = getResources().getColor(android.R.color.transparent);

public CircleView(Context context, AttributeSet attrs) {
super(context, attrs);
}

public void setCircleColor(int color) {
mColor = color;
invalidate();
}

public int getCircleColor() {
return mColor;
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int x = getWidth();
int y = getHeight();
int radius;
radius = Math.min(x, y) / 3;
Paint paint = new Paint();
paint.setStyle(Paint.Style.FILL);
paint.setColor(getResources().getColor(android.R.color.transparent));
canvas.drawPaint(paint);
paint.setColor(mColor);
canvas.drawCircle(x / 2, y / 2, radius, paint);
}
}
[/syntax]
Дальше добавляйте в свой XML что-то типа
[syntax=xml]
<RelativeLayout
android:id="@+id/circle_container"
android:background="@android:color/darker_gray"
android:layout_width="match_parent"
android:layout_height="match_parent">
<your.package.name.CircleView
android:id="@+id/circle_view"
android:background="@android:color/black"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
[/syntax]
Ну а дальше в коде находите этот элемент
[syntax=java5]CircleView circleView = (CircleView) findViewById(R.id.circle_view);[/syntax]

Важно чтобы @+id/circle_container занимал весь экран, поверх вашей карты