Как добавить вид к определенной точке на mapView - PullRequest
0 голосов
/ 30 июня 2011

an Когда событие onTouch происходит в моем MapView, я хочу, чтобы макет, который я указал, был нарисован выше места, где пользователь коснулся

Ниже показано, с чего я начал, я не знаю, как на самом делепоместите всплывающее окно на значения x и y, полученные из события.Ребята, у вас есть идеи?

@Override
public boolean onTouchEvent(MotionEvent ev, MapView mapView) {

int X = (int)ev.getX();          
int Y = (int)ev.getY();

ViewGroup parent=(ViewGroup)map.getParent();
View popup=getLayoutInflater().inflate(R.id.popup, parent, false);

((ViewGroup)map.getParent()).addView(popup);

Ответы [ 2 ]

0 голосов
/ 23 июля 2011

Сначала вам нужна одна глобальная точка с координатами X, Y

@Override
public boolean onTouchEvent(MotionEvent ev, MapView mapView) {
    int X = (int)ev.getX();          
    int Y = (int)ev.getY();

    selectedPoint = new Point(X,Y);
    return true;
}

Теперь вы должны переопределить метод onDraw () для отображения всплывающего окна. Есть много решений для этого, я пробовал это со StaticLayout:

@Override
public void draw (Canvas canvas, MapView mapView, boolean shadow){
    super.draw(canvas, mapView, false); 
    if ( selectedPoint != null) {

        // here you should define PopupText, textPaint and width variables

        StaticLayout sl = new StaticLayout(popupText, textPaint, width, 
                    Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);  

        // here you can draw a rectangle — border for your popup text. 
        // You can use sl.getWidth() and sl.getWidth() methods to get the popup dimensions  

        canvas.save();
        canvas.translate(selectedPoint.x, selectedPoint.y);
        sl.draw(canvas);
        canvas.restore()
    }
}
0 голосов
/ 30 июня 2011

Вы можете установить MapView.LayoutParams() со значениями x и y, а затем вызвать MapView's addView с помощью LayoutParams.

MapView.LayoutParams params = new MapView.LayoutParams(width, height, x, y, alignment);
mapView.addView(popup, params);
...