01-04-2016, 10:13 AM
Nếu bạn đã thêm một lớp phủ lên bản đồ, bạn có thể ghi đè lên các phương pháp onTouchEvent() trong lớp MapOverlay. Phương pháp này được bắn mỗi khi người dùng chạm vào bản đồ. Phương pháp này có hai tham số: MotionEvent và MapView. Sử dụng tham số MotionEvent, bạn có thể xác định xem người dùng đã nâng lên ngón tay của mình từ màn hình bằng cách sử dụng phương pháp getAction(). Trong đoạn mã sau khi lap trinh android đây, nếu người dùng đã cảm động và sau đó nhấc ngón tay, bạn sẽ hiển thị độ và vĩ độ của địa điểm xúc động:
Code:import android.view.MotionEvent;
import android.widget.Toast;
//...
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);
//---translatetheGeoPointtoscreenpixels---
Pointscreen Pts=new Point();
mapView.getProjection().toPixels(p,screenPts);
//---addthemarker---
Bitmap bmp=BitmapFactory.decodeResource(
getResources(),R.drawable.pushpin);
canvas.drawBitmap(bmp,screenPts.x,screenPts.y-50,null);
returntrue;
}
@Override
public boolean onTouchEvent(MotionEvent event, MapView mapView)
{
//---when user lifts his finger---
if(event.getAction() == 1) {
GeoPoint p = mapView.getProjection().fromPixels(
(int) event.getX(),
(int) event.getY());
Toast.makeText(getBaseContext(),
“Location: “+
p.getLatitudeE6() / 1E6 + “,”+
p.getLongitudeE6() /1E6 ,
Toast.LENGTH_SHORT).show();
}
return false;
}
}Phương pháp getProjection() trả về một chiếu để chuyển đổi giữa các màn hình tọa độ điểm ảnh và tọa độ vĩ độ / kinh độ. Phương pháp fromPixels() sau đó chuyển đổi màn hình độ vào một đối tượng GeoPoint.
Hình dưới đây cho thấy bản đồ hiển thị một tập hợp các tọa độ khi người dùng nhấp chuột vào một vị trí trên bản đồ.
![[Image: nhan-biet-vi-tri-khi-cham-tren-ban-do-android.png]](http://laptrinhandroid.net.vn/wp-content/uploads/2015/10/nhan-biet-vi-tri-khi-cham-tren-ban-do-android.png)
------------------- || -------------------
Trung tâm đào tạo hoc php cơ bản nâng cao tại VietPro!
Code:
import android.view.MotionEvent;
import android.widget.Toast;
//...
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);
//---translatetheGeoPointtoscreenpixels---
Pointscreen Pts=new Point();
mapView.getProjection().toPixels(p,screenPts);
//---addthemarker---
Bitmap bmp=BitmapFactory.decodeResource(
getResources(),R.drawable.pushpin);
canvas.drawBitmap(bmp,screenPts.x,screenPts.y-50,null);
returntrue;
}
@Override
public boolean onTouchEvent(MotionEvent event, MapView mapView)
{
//---when user lifts his finger---
if(event.getAction() == 1) {
GeoPoint p = mapView.getProjection().fromPixels(
(int) event.getX(),
(int) event.getY());
Toast.makeText(getBaseContext(),
“Location: “+
p.getLatitudeE6() / 1E6 + “,”+
p.getLongitudeE6() /1E6 ,
Toast.LENGTH_SHORT).show();
}
return false;
}
}