Создание перекрестия в центре моей карты Google - PullRequest
2 голосов
/ 30 июня 2010

Я новичок в разработке для Android, и у меня есть проблема, над которой я работаю часами безуспешно.Я хочу создать перекрестие в центре моей карты Google, которое остается в центре, даже когда карта панорамируется.У меня есть .png изображение перекрестия в моем каталоге для рисования.Кроме того, у меня есть MapView, который отображает карту Google с несколькими маркерами.Как лучше всего подойти к этой проблеме?

Ответы [ 4 ]

3 голосов
/ 30 июня 2010

Вам нужно будет сделать OverhairOverlay.Не проверял это.

public class CrosshairOverlay extends Overlay {
    public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) {
        Projection projection = mapView.getProjection();
        Point center = projection.toPixels(mapView.getMapCenter(), null);

        // Customize appearance, should be a fields.
        Paint p = new Paint(Paint.ANTI_ALIAS_FLAG);
        p.setColor(0xFF000000);
        p.setStyle(Style.STROKE);
        p.setStrokeWidth(2.0f);
        int innerRadius = 10;
        int outerRadius = 20;

        canvas.drawCircle(center.x, center.y, innerRadius, p);
        canvas.drawCircle(center.x, center.y, outerRadius, p);
        return true;
    }
}
2 голосов
/ 30 июня 2010
public class CrossHairsOverlay extends Overlay {
    public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) {
        super.draw(canvas, mapView, shadow);
        GeoPoint centerGp = mapView.getMapCenter();
        Projection projection = mapView.getProjection();
        Point centerPoint = projection.toPixels(centerGp, null);
        Paint p = new Paint();
        Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.crosshairs_dial);
        canvas.drawBitmap(bmp, centerPoint.x, centerPoint.y, p);
        return true;
    }
}
1 голос
/ 29 января 2015

Это то, что я сделал для простого CrossHairOverlay (используя API Fragment и Google maps для Android):

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center">

    <TextView
        android:id="@+id/crosshair_horizontal_line"
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:padding="1dp"
        android:background="@color/black"/>
</LinearLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_gravity="center">

    <TextView
        android:id="@+id/crosshair_vertical_line"
        android:layout_width="1dp"
        android:layout_height="fill_parent"
        android:padding="2dp"
        android:background="@color/black"/>
</LinearLayout>

Вот пример экрана:

enter image description here

0 голосов
/ 09 марта 2016

Я взял ответ KingAlex1985 и сделал его немного проще.Он производит перекрестие в центре экрана с точкой в ​​стиле милитари

`` ``

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_centerInParent="true"
    android:foregroundGravity="center"
    android:gravity="center"

    android:orientation="horizontal">

    <View
        android:layout_width="15dp"
        android:layout_height="1dp"
        android:background="@android:color/black"
        />
    <View
        android:layout_width="5dp"
        android:layout_height="1dp"
        android:background="@android:color/transparent"
        />
    <View
        android:layout_width="2dp"
        android:layout_height="2dp"
        android:background="@android:color/black"
        />
    <View
        android:layout_width="5dp"
        android:layout_height="1dp"
        android:background="@android:color/transparent"
        />
    <View
        android:layout_width="15dp"
        android:layout_height="1dp"
        android:background="@android:color/black"
        />
</LinearLayout>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_centerInParent="true"
    android:foregroundGravity="center"
    android:gravity="center"
    android:orientation="vertical">

    <View
        android:layout_width="1dp"
        android:layout_height="15dp"
        android:background="@android:color/black"
        />
    <View
        android:layout_width="1dp"
        android:layout_height="11dp"
        android:background="@android:color/transparent"
        />

    <View
        android:layout_width="1dp"
        android:layout_height="15dp"
        android:background="@android:color/black"
        />
</LinearLayout>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...