Ive đã cố gắng để đạt được như vậy, đây chính xác là những gì tôi muốn: - MapView 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();
}
}
Cảm ơn tôi sẽ dùng thử. – user606669
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