Android: Các kiểu View và hiển thị một vị trí cụ thể trên Map

Android: Các kiểu View và hiển thị một vị trí cụ thể trên Map

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


TrafficView

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:

?
1
2
3
4
mapView.setSatellite(true);
mapView.setStreetView(true);
mapView.setTraffic(true);

Cụ thể nếu bạn để TrafficView:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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.

?
1
2
3
4
5
6
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)

?
1
2
3
4
5
6
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.

Full sourcecode :

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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);
    }
    
    
}

Kết quả :

Download Sourcecode : Clickhere
Bạn thấy bài viết này như thế nào?: 
No votes yet
Ảnh của Tommy Tran

Tommy owner Express Magazine

Drupal Developer having 9+ year experience, implementation and having strong knowledge of technical specifications, workflow development. Ability to perform effectively and efficiently in team and individually. Always enthusiastic and interseted to study new technologies

  • Skype ID: tthanhthuy

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
 Mark Zuckerberg bất ngờ ghé thăm Việt Nam

Mark Zuckerberg bất ngờ ghé thăm Việt Nam

Tỷ phú trẻ Mark Zuckerberg hiện đang có mặt tại thủ đô Hà Nội rồi nhé!

Xử lý bán hàng cho Organic Groups trong Drupal Commerce

Xử lý bán hàng với Organic Groups cho Drupal Commerce

There are several ways to sell access to content on your Drupal site. One of the ways that hasn't been discussed much in Drupal tutorials is selling access to private Organic Groups with Drupal Commerce.

Mark Carver đã design xong cho Drupal Community trên Drupal.org

Mark Carver đã design xong cho Drupal Community trên Drupal.org

The styling changes on Drupal.org are a nice improvement, mostly because it is a regular reminder about the individuals who are pushing to make Drupal better

Công ty diệt chuột T&C

 

Diet con trung