2010-01-31 40 views
9

Làm cách nào để thêm điểm đánh dấu trên một vị trí cụ thể trong bản đồ?Thêm điểm đánh dấu trên vị trí được chạm bằng bản đồ google trong android

Tôi thấy mã này hiển thị tọa độ của vị trí được chạm. Và tôi muốn một điểm đánh dấu bật lên hoặc được hiển thị trong cùng một vị trí đó mỗi khi nó được chạm vào. Làm thế nào để tôi làm điều này?

public boolean onTouchEvent(MotionEvent event, MapView mapView) { 
       if (event.getAction() == 1) {     
        GeoPoint p = mapView.getProjection().fromPixels(
         (int) event.getX(), 
         (int) event.getY()); 
         Toast.makeText(getBaseContext(), 
          p.getLatitudeE6()/1E6 + "," + 
          p.getLongitudeE6() /1E6 , 
          Toast.LENGTH_SHORT).show(); 

         mapView.invalidate(); 
       }        
       return false; 
      } 

Trả lời

4

Bạn muốn thêm OverlayItem. Google Mapview tutorial cho biết cách sử dụng nó.

+0

oks! Tôi đạt được rồi. Tôi có thể vẽ điểm đánh dấu ngay bây giờ. cảm ơn :) – lulala

+0

Tuyệt vời, bạn có thể chấp nhận câu trả lời để những người khác tìm cách trả lời câu hỏi sẽ biết rằng câu trả lời này đã được trả lời chưa? – RickNotFred

8

Nếu bạn muốn thêm một điểm đánh dấu vào vị trí chạm vào, sau đó bạn nên làm như sau:

public boolean onTouchEvent(MotionEvent event, MapView mapView) {    
     if (event.getAction() == 1) {     
       GeoPoint p = mapView.getProjection().fromPixels(
        (int) event.getX(), 
        (int) event.getY()); 
        Toast.makeText(getBaseContext(),        
         p.getLatitudeE6()/1E6 + "," + 
         p.getLongitudeE6() /1E6 ,        
         Toast.LENGTH_SHORT).show(); 
        mapView.getOverlays().add(new MarkerOverlay(p)); 
        mapView.invalidate(); 
      }        
      return false; 
     } 

Kiểm tra xem Im gọi MarkerOverlay sau khi thông báo xuất hiện. Để thực hiện việc này, bạn phải tạo Overlay khác, MapOverlay:

class MarkerOverlay extends Overlay{ 
    private GeoPoint p; 
    public MarkerOverlay(GeoPoint p){ 
     this.p = p; 
    } 

    @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(), /*marker image*/);    
     canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null);   
     return true; 
    } 
} 

Tôi hy vọng bạn tìm thấy điều này hữu ích!

Các vấn đề liên quan