地图视图:点击时显示覆盖物详情

7
我一直在尝试实现相同的功能,这正是我想要的: Google Maps Image

我已经使用叠加层实现了googleMapView,但我有一个问题:当单击每个叠加层时,我想显示一个弹出窗口,并且当我单击另一个叠加层时,以前的弹出窗口应该消失,新的弹出窗口应该出现在单击位置(即投影点)。并且当我单击屏幕上的其他地方时,弹出窗口不应该出现。我使用onTap事件记录onclick。(map_overlay)是我想要在地图上单击投影点时显示的布局。以下是代码,map_overlay.xml可以是任何文件。

类: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;
}

以下是主类,我在其中显示投影点,这很好用。如上所示,我已经在另一个类中实现了onTap事件:
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();
    }
}
1个回答

12

请查看GitHub上的Android-mapviewballoons,它有一个可以扩展的ItemizedOverlay,可以完成这个确切的功能。我在我的几个应用程序中使用它。


太棒了!非常好用,易于操作,提供良好的说明和示例!如果我能的话,我会给它加上+2的评分。 - plainjimbo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接