маркер не отображается на карте в htc - PullRequest
0 голосов
/ 30 декабря 2011

Я застрял с этим, я испробовал все возможности, но не успех. У меня есть простое приложение с картой для тестирования и пользователь может просто коснуться карты и на этом месте поставить маркер. Это будет успешно работать на всех устройствах, кроме устройств HTC. Я не знаю, как реализовать событие onTouch для mapview

вот мой код для onTouch

private class MarkerOverlay extends Overlay{        
    private boolean isMove;
    @Override
    public boolean onTouchEvent(MotionEvent e, MapView mapView) {           
        final int x = (int) e.getX();
        final int y = (int) e.getY();
        if(e.getAction()==1){
            if(!isMove){
                geopoint = mapView.getProjection().fromPixels(x, y);
                OverlayItem overlayItem = new OverlayItem(geopoint, "Title", "Description");
                if(mapOverlay.m_overlays.size()>=1){
                    mapOverlay.clearOverlayAll();
                }
                mapOverlay.addOverlay(overlayItem);
                if(!mapView.getOverlays().contains(mapOverlay))
                    mapView.getOverlays().add(mapOverlay);

                mapView.invalidate();
                Toast.makeText(SimpleMapMarkerActivity.this, "in press", Toast.LENGTH_SHORT).show();
            }else{
                Toast.makeText(SimpleMapMarkerActivity.this, "out press", Toast.LENGTH_SHORT).show();
            }
        }else if(e.getAction()==MotionEvent.ACTION_DOWN)
            isMove = false;
        else if(e.getAction()==MotionEvent.ACTION_MOVE)
            isMove = true;

        return super.onTouchEvent(e, mapView);
    }
}

Ответы [ 3 ]

0 голосов
/ 30 декабря 2011

MapMarkerExample

В этом примере показано, как нарисовать подвижный маркер на карте. Вы можете убрать маркер и изменить его положение. Может использоваться в любом приложении, где вы хотите получить данные от пользователя для местоположения на карте.

Алгоритм:

1.) Создайте новый проект с помощью File-> New -> Android Project и назовите его MapMarkerExample. 2.) Вы увидите код по умолчанию в файле main.xml и файле Android. 3.) Добавьте интернет-разрешение в ваш файл манифеста или напишите следующее в файле android.manifest:

http://www.edumobile.org/android/android-apps/mapmarkerexample/

0 голосов
/ 02 января 2012

Я получил решение и это решение, данное харизмом

Всякий раз, когда вы просто внедряете маркер с картой так же, как нажмите на карту и отображаете рынок, тогда реализуйте onTap(GeoPoint g, MapView mapview).

А если вы хотите внедрить маркер, например, перемещение пользователем, например перетаскивание, то используйте onTouch(). Для onTouch() и движущегося маркера, такого как перетаскивание, отметьте эту ссылку

http://www.edumobile.org/android/android-apps/mapmarkerexample/

0 голосов
/ 30 декабря 2011

У меня была такая же проблема.Я не уверен, если это может решить вашу проблему с HTC.Но вот что я сделал:

Я переопределил dispatchTouchEvent.Он работает на моем Samsung Galaxy S2.

    @Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    // TODO Auto-generated method stub
    if(ev.getAction() == MotionEvent.ACTION_DOWN){
        xPos = ev.getX();
        yPos = ev.getY();
    }
    if (ev.getAction() == MotionEvent.ACTION_UP){
        if (xPos==ev.getX() && yPos == ev.getY()){
        Log.i(LOG_TAG, "Calling onTouch from dispatchTouchEvent.");
            onTouch(mapView, ev);
        }
    }
    return super.dispatchTouchEvent(ev);
}

Я делаю это в mapActivity.не в оверлее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...