Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
SkN[i]lpl[e][r]
3 / 3 / 0
Регистрация: 12.05.2011
Сообщений: 237
#1

Отображения маркера на карте при длительном нажатии osmdroid - Программирование Android

27.03.2015, 11:33. Просмотров 618. Ответов 0
Метки нет (Все метки)

Здравствуйте! Я пытаюсь реализовать на карте отображение маркера при длительном нажатии на нее... Перерыл весь интернет, нашел только один пример кода. Но при вставки в проект у меня практически все подчеркивается красным... Помогите разобраться какие методы и классы тут нужно объявлять и как вообще этим пользоваться...
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
MapEventsReceiver mReceive = new MapEventsReceiver() {
 
    @Override
    public boolean singleTapUpHelper(IGeoPoint arg0) {
     Log.d("debug", "Single tap helper");
     //your onSingleTap logic here
    return false;
    }
 
    @Override
    public boolean longPressHelper(IGeoPoint arg0) {
    Log.d("debug", "LongPressHelper");
    //your onLongPress logic here
    setMarker(arg0);
    return false;
    }
};
 
//Creating a handle overlay to capture the gestures
MapEventsOverlay OverlayEventos = new MapEventsOverlay(getBaseContext(), mReceive);
map.getOverlays().add(OverlayEventos);
 
//Refreshing the map to draw the new overlay
map.invalidate();
 
 
//I use this method to set the marker on touchPoint
    protected void setMarker(IGeoPoint arg0) {
 
touchPoint = (GeoPoint) arg0;
targetPoint = touchPoint;
path.addPoint(targetPoint);
 
//Listener to handle item's(markers) events
 myOnItemGestureListener = new OnItemGestureListener<OverlayItem>() {
 
    @Override
    public boolean onItemLongPress(int arg0, OverlayItem arg1) {
    Log.d("debug", "Testing long tap on item");
    //your item onLongPress logic here
        return false;
    }
 
    @Override
    public boolean onItemSingleTapUp(int index, OverlayItem item) {
    Log.d("debug", "Testing single tap on item");
    //your item onSingleTap logic here
        return true;
    }
};
 
itemarray.add(new OverlayItem("Marker " + cnt, "Info about marker " + cnt, touchPoint));
 
ItemizedOverlayWithFocus<OverlayItem> overlayDeItems = new ItemizedOverlayWithFocus<OverlayItem>(getBaseContext(), itemarray, myOnItemGestureListener);
map.getOverlays().add(overlayDeItems);
 
overlayDeItems.setFocusItemsOnTap(true);
map.invalidate();
itemarray = new ArrayList<OverlayItem>();
   cnt++;
}
Добавлено через 17 часов 46 минут
после долгих мучений переделал этот код вот под этот:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
MapEventsReceiver mReceive = new MapEventsReceiver() {
 
 
        @Override
        public boolean singleTapConfirmedHelper(GeoPoint p) {
            Log.d("debug", "Single tap helper");
            //your onSingleTap logic here
            logUser("korotkoe nazhatie");
            return false;
        }
 
        @Override
        public boolean longPressHelper(GeoPoint p) {
            Log.d("debug", "LongPressHelper");
            //your onLongPress logic here
            logUser("Dlinnoe nazhatie");
            MapEventsOverlay OverlayEventos = new MapEventsOverlay(getBaseContext(), mReceive);
            mapView.getOverlays().add(OverlayEventos);
 
//Refreshing the map to draw the new overlay
            mapView.invalidate();
 
            return false;
        }
    };
вроде все норм, скомпилировалось, запустил на телефоне, но... на нажатие никак не реагирует, ни лога не выводит ни метку не ставит, какбудто вызова этих функций не происходит, не могу понять почему.

Добавлено через 32 минуты
даже так переделал, все равно не работает, никак не реагирует...
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
 MapEventsReceiver mReceive = new MapEventsReceiver() {
 
 
        @Override
        public boolean singleTapConfirmedHelper(GeoPoint p) {
            Log.d("debug", "Single tap helper");
            //your onSingleTap logic here
            logUser("korotkoe nazhatie");
            return false;
        }
 
        @Override
        public boolean longPressHelper(GeoPoint p) {
            Log.d("debug", "LongPressHelper");
            //your onLongPress logic here
            logUser("Dlinnoe nazhatie");
            //Creating a handle overlay to capture the gestures
            setMarker(p);
            MapEventsOverlay OverlayEventos = new MapEventsOverlay(getBaseContext(), mReceive);
            mapView.getOverlays().add(OverlayEventos);
 
//Refreshing the map to draw the new overlay
            mapView.invalidate();
 
            return false;
        }
    };
 
 
 
 
    //I use this method to set the marker on touchPoint
   protected void setMarker(IGeoPoint arg0) {
 
       GeoPoint touchPoint = (GeoPoint) arg0;
    //  GeoPoint  targetPoint = touchPoint;
 
       //mapView.getOverlays().add(targetPoint);
 
//Listener to handle item's(markers) events
     ItemizedIconOverlay.OnItemGestureListener   myOnItemGestureListener = new ItemizedIconOverlay.OnItemGestureListener<OverlayItem>() {
 
            @Override
            public boolean onItemLongPress(int arg0, OverlayItem arg1) {
                Log.d("debug", "Testing long tap on item");
                //your item onLongPress logic here
                logUser("Dlinnoe nazhatie");
                return false;
            }
 
            @Override
            public boolean onItemSingleTapUp(int index, OverlayItem item) {
                Log.d("debug", "Testing single tap on item");
                //your item onSingleTap logic here
                logUser("korotkoe nazhatie");
                return true;
            }
        };
 
       ArrayList<OverlayItem> itemarray = new ArrayList<OverlayItem>();
        itemarray.add(new OverlayItem("Marker " , "Info about marker " , touchPoint));
 
        ItemizedOverlayWithFocus<OverlayItem> overlayDeItems = new ItemizedOverlayWithFocus<OverlayItem>(getBaseContext(), itemarray, myOnItemGestureListener);
        mapView.getOverlays().add(overlayDeItems);
 
        overlayDeItems.setFocusItemsOnTap(true);
        mapView.invalidate();
      //  itemarray = new ArrayList<OverlayItem>();
        //cnt++;
    }
Добавлено через 59 секунд
вот как сделать чтоб реагировал на нажатия на карту?...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2015, 11:33     Отображения маркера на карте при длительном нажатии osmdroid
Посмотрите здесь:
Android Как нарисовать кастомную иконку маркера на карте?
Android Разработка приложения для отображения местоположения пользователей на карте
Перемещение маркера на GoogleMap Android
Android Что то вроде Маркера
Android Привязка маркера к камере в google maps
Несколько snippet для маркера Google Maps v.2 Android
Android Разные drawable для маркера Google Maps
Android Описание маркера в развернутом виде, GoogleMap API
Android Ошибка при нажатии
Android Ошибка при нажатии на кнопку
Android Действие при нажатии на ссылку
Вылет при нажатии кнопки Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru