2010-06-30 71 views
2

我是Android開發新手,我有一個問題,我一直在努力工作幾個小時,但沒有成功。我想在我的Google地圖的中心創建一個十字線,即使在地圖平移時,它仍停留在中心位置。我的可繪製目錄中有一個十字線的.png圖像。另外,我有一個MapView,它顯示帶有多個標記的Google Map。解決這個問題的最好方法是什麼?在我的Google地圖中心創建十字線

回答

2
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; 
    } 
} 
+0

您可能還需要居中位圖: //如果您希望圖像居中 'canvas.drawBitmap(bmp,centerPoint.x - bmp.getWidth()/ 2,centerPoint.y - bmp.getHeight()/2,p);'
OR

//如果想要的圖像是底部中心 'canvas.drawBitmap(BMP,centerPoint.x - bmp.getWidth()/ 2,centerPoint.y - bmp.getHeight(),p);' – 2013-01-05 01:56:53

3

您需要製作CrosshairOverlay。沒有測試過這個。

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; 
    } 
} 
+0

謝謝!通過一些編輯,我能夠使其工作。 – user380242 2010-06-30 19:46:41

+0

@Robby Pond如何使用這個類來繪製谷歌地圖上的十字線? – 2016-09-14 07:45:04

1

這就是我必須建立一個簡單的CrossHairOverlay(使用片段和谷歌地圖API2 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

我拿了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> 

相關問題