Thứ bảy, ngày 3 tháng 12 năm 2016

Android Google Maps Tutorial - Phần 3

Ngày đăng: 15/11/2011, 11:38:18AM | Lượt xem: 10,738
Hot!

 

1. Các kiểu View trong Google Maps

Google Maps cung cấp cho chúng ta 3 tùy chọn để xem GoogleMaps là StreetView, SatelliteView và TrafficView.

SatelliteView

 
 
StreetView ( hiện tại chỉ hỗ trợ ở 1 số nước Châu Âu vì Google phải sử dụng xe chuyên dụng để chụp ảnh tất cả các tuyến đường nên rất mấy thời gian  )
Khi lập trình các bạn muốn view theo kiểu nào thì chỉ cần sử dụng phương thức tương ứng:
mapView.setSatellite(true);
mapView.setStreetView(true);
mapView.setTraffic(true);
Cụ thể nếu bạn để TrafficView:
public class GoogleMapsActivity extends MapActivity {
 
    MapView mapView;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        //Add zoom view to Google Maps
        mapView = (MapView)findViewById(R.id.myMap);
        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.setTraffic(true);
    }
2. Xác định vị trí trên Google Maps

Tọa độ 1 điểm trên GoogleMaps được xác định bằng 2 thông số là Kinh độ (Longitude ) và Vĩ độ ( Latitude ). Để hiện thị 1 điểm trên GoogleMaps bạn cần biết được 2 thông số này của vị trí đó.
Cụ thể trong tutorial này mình hiển thị vị trí của Chùa Một Cột lên ứng dụng, đầu tiên bạn phải biết tọa đọa của địa điểm này. Để xác định bạn có thể vào www.maps.google.com để lấy thông số
 
Như ở trên ta lấy được : Latitude = 21.036074, Longitude= 105.833636 ( Tính bằng đơn vị Độ - Degrees)

Trở lại với Android, ta sử dụng lớp GeoPoint ( com.google.android.maps.GeoPoint ) để chứa tọa độ 1 điểm.
GeoPoint p;
String coordinates[] = {"21.036074","105.833636"};
double latiTude = Double.parseDouble(coordinates[0]);
double longiTude = Double.parseDouble(coordinates[1]);
p = new GeoPoint((int)(latiTude * 1E6) ,(int)(longiTude * 1E6));
Do hàm tạo của lớp GeoPoint sử dụng đơn vị là MicroDegrees , nên chúng ta phải nhân thêm 1000000 ( 1E6 ).

Và cuối cùng là show lên map ( ta sử dụng lớp MapController)
MapController mc;
mc = mapView.getController();
mc.animateTo(p);
mc.setZoom(17);
mapView.invalidate();
Phương thức animateTo(GeoPoint p) để điều khiển Google Maps trỏ đến 1 điểm p được định nghĩa trc
Phương thức setZoom(int zoom) để set zoom cho GoogleMaps
Phương thức invalidate() để vẽ lại map của bạn.
package com.vietandroid.tut.map;
 
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
 
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
 
public class GoogleMapsActivity extends MapActivity {
 
    MapView mapView;
    MapController mc;
    GeoPoint p;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        //Add zoom view to Google Maps
        mapView = (MapView)findViewById(R.id.myMap);
        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.setSatellite(true);
//        mapView.setStreetView(true);
        mapView.setTraffic(true);
        
        String coordinates[] = {"21.036074","105.833636"};
        double latiTude = Double.parseDouble(coordinates[0]);
        double longiTude = Double.parseDouble(coordinates[1]);
        p = new GeoPoint((int)(latiTude * 1E6) ,(int)(longiTude * 1E6));
        
        mc = mapView.getController();
        mc.animateTo(p);
        mc.setZoom(17);
        mapView.invalidate();
        
    }
 
    @Override
    protected boolean isRouteDisplayed() {
        // TODO Auto-generated method stub
        return false;
    }
 
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        
        MapController mc = mapView.getController();
        switch (keyCode) {
        case KeyEvent.KEYCODE_I:
                mc.zoomIn();
                break;
        case KeyEvent.KEYCODE_O:
                mc.zoomOut();
                break;
        }
        return super.onKeyDown(keyCode, event);
    }
 
sourcecode
http://www.mediafire.com/?4tx7ohisa03jv2t
 

 

doanhkisi
 Chia sẻ qua: 
Hot!
Ý kiến bạn đọc

These items will be permanently deleted and cannot be recovered. Are you sure?

Gallery

image

Maecenas viverra rutrum pulvinar

Maecenas viverra rutrum pulvinar! Aenean vehicula nulla sit amet metus aliquam et malesuada risus aliquet. Vestibulum rhoncus, dolor sit amet venenatis porta, metus purus sagittis nisl, sodales volutpat elit lorem…

Read more

Text Links

Thiết kế logo chuyên nghiệp Insky
DAFABET
W88 w88b.com/dang-ky-tai-khoan-w88
W88
Copyright © 2011 - 2012 vietshare.vn by phamkhuong102@gmail.com doanhkisi2315@gmail.com. All rights reserved.