百度地圖SDK for Android[Demo點擊屏幕獲取地理坐標]

 通過手指點擊屏幕從而獲取所點擊點的地理坐標是一個在實際應用中較為常見的功能。下面,我將為大傢介紹如何實現此功能。

        基本原理:通過點擊獲取屏幕坐標,利用坐標轉換的接口,把屏幕坐標轉換為地理坐標。

        有瞭以上的基本原理,我們就可以去具體實現瞭,步驟如下:

        第一步,集成MapView,重寫onTouchEvent方法。代碼如下:

[java]  

public class MyMapView extends MapView {  

  

    public MyMapView(Context context)  

    {  

        super(context);  

    }  

      

    public MyMapView(Context context, AttributeSet set)  

    {  

        super(context, set);  

    }  

      

    public MyMapView(Context context, AttributeSet set, int i)  

    {  

        super(context, set, i);  

    }  

      

    @Override  

    public boolean onTouchEvent(MotionEvent arg0) {  

        // TODO Auto-generated method stub  

        int x = (int)arg0.getX();  

        int y = (int)arg0.getY();  

        GeoPoint geoPoint = this.getProjection().fromPixels(x, y);  

        int xx = geoPoint.getLongitudeE6();  

        int yy = geoPoint.getLatitudeE6();  

        Log.d("xxxxxxxxxxx", Integer.toString(xx));  

        Log.d("yyyyyyyyyyy", Integer.toString(yy));  

        return super.onTouchEvent(arg0);  

    }  

}  

        第二步,在佈局文件中添加上一步自己定義的MapView。代碼如下:

[html]  

<com.baidumap.basemap.MyMapView  

        android:id="@+id/bmapsView"  

        android:layout_width="fill_parent"  

        android:layout_height="fill_parent"  

        android:layout_below="@+id/button1"  

        android:clickable="true" />  www.aiwalls.com

        第三步,在主類中定義並初始化MyMapView對象,運行程序,點擊屏幕就可以獲取點擊點的地理坐標瞭。

 

註意事項:

        1 在自定義並繼承MapView的時候需要註意幾個幾個構造方法,特別是public MyMapView(Context context, AttributeSet set),一定要有,不然會報錯。

        2 佈局文件添加的MapView不再是我們百度為大傢提供的MapView,應該添加自定義的那個MyMapView(否則有什麼意義呢?)。

        3 在使用setContentView方法之前一定要先初始化BMapManager,否則會報錯,這個在官方開發指南及本博客的相關章節都有強調,可是還有很多不細心的開發者犯這個小錯誤。

 

        最後希望通過我們大傢共同的努力使百度地圖SDK越來越好!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *