android - mapView 在点击时显示覆盖细节

标签 android

我一直在努力实现同样的目标,这正是我想要的:- Google Maps Image

我已经实现了带有叠加层的 googleMapView,我有一个问题,我想在点击每个叠加层时显示一个弹出窗口,当我点击另一个叠加层时,以前的 popus 应该消失,新的应该出现在点击的位置(即投影点)。当我点击屏幕上的其他任何地方时,弹出窗口不应该出现。我正在使用 onTap 事件来记录 onclick。 (map_overlay) 是当有人点击 map 上的投影点时我想要显示的布局。代码如下,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();
    }
}

最佳答案

查看 Android-mapviewballoons在github上。有一个你可以扩展的 ItemizedOverlay 来做这件事。我在我的几个应用程序中使用它。

关于android - mapView 在点击时显示覆盖细节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4923422/

相关文章:

android - 无法从移动设备浏览本地计算机上托管的网站

java - 如何在从第一个 Activity 收到的 sqlite 查询中传递整数变量?

c# - Xamarin - 当我更换图像源时闪烁

java - 将 JSON 解析为字符串数组或 xml

Android:如何检查3G是否启用?

javascript - Android 应用程序的底部导航栏 (NativeScript)

android - Genymotion 拒绝以 "The Genymotion virtual device could not get an IP address."开头

android - 无法从我的 Android 应用程序获取电话号码?

java - Android:ImageButton 在为其分配监听器时导致崩溃

android - 需要以编程方式打开蓝牙并在 Android 中发现设备