android使用者介面-組件Widget-地圖視圖MapView

來源:互聯網
上載者:User

一、在Google地圖上顯示本地的位置。

1、首先注意在AndroidManifest.xml檔案中,增加許可權:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>

在application中activity外,增加:uses-library

<uses-library android:name="com.google.android.maps" /> 

 

 

2、在類中,將extends Activity改為extends MapActivity

3、設定可放大縮小地圖的控制項。

在xml檔案中,添加以下內容:

    <LinearLayout android:orientation="vertical"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:id="@+id/zoom" android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true" >
    </LinearLayout>

在類中,加入:

        LinearLayout zoomLayout = (LinearLayout)findViewById(R.id.zoom); 
        View zoomView = mapView.getZoomControls();
        zoomLayout.addView(zoomView,
                new LinearLayout.LayoutParams(
                    LayoutParams.WRAP_CONTENT,
                    LayoutParams.WRAP_CONTENT));
        mapView.displayZoomControls(true);

        mapView.getController().setZoom(14);//設定縮放層級
        p = this.getCurrentGeoPoint();
        mapView.getController().animateTo(p);// 通過動畫方式移動到指定座標s

4、通過以下方法得到當前位置的經緯度

private GeoPoint getCurrentGeoPoint() {
        LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        Location location = locationManager
                .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
        return new GeoPoint((int) (location.getLatitude() * 1e6),
                (int) (location.getLongitude() * 1e6));
    }

5、通過以下方式顯示當前位置在地圖上顯示:

class MapOverlay extends com.google.android.maps.Overlay
    {
        @Override
        public boolean draw(Canvas canvas, MapView mapView,
        boolean shadow, long when)
        {
            super.draw(canvas, mapView, shadow);                  
            //—translate the GeoPoint to screen pixels—
            Point screenPts = new Point();
            mapView.getProjection().toPixels(p, screenPts);
            //—add the marker—
            Bitmap bmp = BitmapFactory.decodeResource(
                getResources(), R.drawable.pushpin);           
            canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null);        
            return true;
        }
    }

在oncreate方法中,加入:

MapOverlay mapOverlay = new MapOverlay();
      List<Overlay> listOfOverlays = mapView.getOverlays();
      listOfOverlays.clear();
      listOfOverlays.add(mapOverlay);

這樣就能在螢幕中顯示你當前位置的地圖顯示了;

如:

原始碼見:http://henzil.googlecode.com/svn/trunk/android.googleMap01/

二、輸入地址,在地圖上顯示相應的位置。此方法是通過查詢位址名稱,返回一個list結果。在地圖上顯示:

此方法與上述方法基本一致,不同之處在於:是用getFromLocationName方法,來查詢目的地的經緯度。

如下代碼:

        // 通過系統預設區域設定進行地圖定位
        Geocoder gc = new Geocoder(this);
        mapView.setStreetView(true);
        try {
            // 通過位址名稱描述返回一個查詢結果的數組(後面參數為返回最大結果數)
            addresses = gc.getFromLocationName(address, 5);

            // 如果未查詢到任何結果
            if (addresses != null) {
                geoPoint = new GeoPoint(
                // 返回緯度,經度
                        (int) (addresses.get(0).getLatitude() * 1E6),
                        (int) (addresses.get(0).getLongitude() * 1E6));

                setTitle(addresses.get(0).getFeatureName());
                MyOverlay myOverlay = new MyOverlay();
                mapView.getOverlays().add(myOverlay);
                mapView.getController().setZoom(16);
                mapView.getController().animateTo(geoPoint);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

如所示:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.