2011-02-07 32 views
7

Ive đã cố gắng để đạt được như vậy, đây chính xác là những gì tôi muốn: - Google Maps ImageMapView hiển thị chi tiết lớp phủ khi nhấp

tôi đã thực hiện googleMapView với lớp phủ, tôi có một vấn đề tôi muốn hiển thị một popup khi click trên mỗi lớp phủ và khi tôi nhấp vào một lớp phủ khác, popus trước đó sẽ biến mất và lớp phủ mới sẽ xuất hiện ở vị trí được nhấp (nghĩa là các điểm chiếu). Và popup sẽ không xuất hiện khi tôi nhấp vào bất cứ nơi nào khác trên screen.Im bằng cách sử dụng onTap sự kiện để ghi onclick. (map_overlay) là bố cục mà tôi muốn hiển thị khi ai đó nhấp vào một điểm chiếu trên bản đồ. Mã dưới đây và map_overlay.xml có thể là bất kỳ tệp nào.

Class: ItemizedOverlay

public boolean onTap(GeoPoint p, MapView mapView) { 

LayoutInflater inflater = (LayoutInflater)cContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

LayoutParams lp = new MapView.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT, p, LayoutParams.WRAP_CONTENT); 
LinearLayout view = (LinearLayout)inflater.inflate(R.layout.map_overlay, null); 

mapView.removeView(view);  
mapView.invalidate();  
mapView.addView(view,lp); 

mapView.invalidate(); 

return true; 
} 

Dưới đây là lớp chính trong đó im hiển thị điểm chiếu mà đang làm việc tốt và im gọi điện thoại tôi đã thực hiện các sự kiện ONTAP trong lớp khác như trình bày ở trên:

public **class MapView** extends MapActivity{ 
    private ArrayList<MyClass> overlayItem ; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.large_mapview); 
     mapView = (MapView) findViewById(R.id.mapview); 
     // mapView.setBuiltInZoomControls(true); 

     List<Overlay> mapOverlays = mapView.getOverlays(); 
     Drawable drawable = this.getResources().getDrawable(R.drawable.mappointer2); 
     ItemizedOverlay itemizedoverlay = new ItemizedOverlay(drawable,this); 
     OverlayItem overlayitem; 
     GeoPoint point; 
     double lat; 
     double lng;   

     for (int i = 0; i < overlayItem.size(); i++) { 

      lat = Double.parseDouble(overlayItem.get(i).getLatitude()); 
      lng = Double.parseDouble(overlayItem.get(i).getLongitude()); 
      point = new GeoPoint((int) (lat * 1E6),(int) (lng * 1E6)); 

      overlayitem = new OverlayItem(point, i+"".toString(), overlayItem.get(i).getDetails().toString()); 
      itemizedoverlay.addOverlay(overlayitem); 
      mapOverlays.add(itemizedoverlay); 

     } 

     mapView.invalidate(); 
    } 
} 

Trả lời

12

Kiểm tra Android-mapviewballoons trên github. Có một ItemizedOverlay mà bạn có thể mở rộng mà không chính xác điều này. Tôi sử dụng nó trong một số ứng dụng của mình.

+0

Cảm ơn tôi sẽ dùng thử. – user606669

+0

Tuyệt vời! hoạt động tuyệt vời, dễ sử dụng, hướng dẫn tốt và ví dụ! Tôi sẽ cho nó +2 nếu tôi có thể. – plainjimbo

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