0

当我将 x 和 y 坐标添加到 MapView.LayoutParams 构造函数时。它的 MODE_VIEW 行为消失了。我想要这种行为以及 x 和 y 坐标。我不明白为什么会这样。

public void addMarkerToMAp(GeoPoint geoPoint) {
    mapView.removeAllViews();

    final ImageView view = new ImageView(mapView.getContext());
    view.setImageResource(R.drawable.map_marker_anim);
    view.post(new Runnable() {
        @Override
        public void run() {
            AnimationDrawable animationDrawable = (AnimationDrawable) view.getDrawable();
            animationDrawable.start();
        }
    });

    mapView.addView(view);
    MapView.LayoutParams layoutParams = new MapView.LayoutParams(MapView.LayoutParams.WRAP_CONTENT,
        MapView.LayoutParams.WRAP_CONTENT,
        geoPoint,
        MapView.LayoutParams.MODE_VIEW);
    view.setLayoutParams(layoutParams);
}

所以,我得到了 geoPoint 作为

geoPoint = mapView.getProjection().fromPixels((int)event.getX(), (int)event.getY()); 其中事件是点击事件。

我还想在(event.getX(),event.getY())处显示标记图钉,但它显示在点击下方。

4

1 回答 1

0

如果您在 Eclipse 中编码,请按 ctrl+shift+f。这将使您的代码更具可读性。话虽如此,当您显示标记时,您使用哪些点?如果我没有错,那么您将插入的点将是左下角(如果它是覆盖可绘制的)。

左上角,如果它是一个视图(我认为这就是你在做什么),因此它会出现在你的点击下。

您可以添加一个 offsetx 和 offsety 到它是 -view.getWidth()/2 和 -view.getHeight/2。然后应该使您的视图直接位于您按下的点下方。但是,您可能无法获取 view.getWidth/Height,因此请确保它不返回 0。

于 2012-05-23T12:09:39.653 回答