Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
SkN[i]lpl[e][r]
3 / 3 / 2
Регистрация: 12.05.2011
Сообщений: 248
1

Отображения маркера на карте при длительном нажатии osmdroid

27.03.2015, 11:33. Просмотров 809. Ответов 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 секунд
вот как сделать чтоб реагировал на нажатия на карту?...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2015, 11:33
Ответы с готовыми решениями:

Как нарисовать кастомную иконку маркера на карте?
Доброго дня. Мне необходимо разместить на Google карте кастомный маркер...

Разработка приложения для отображения местоположения пользователей на карте
Доброго времени суток! Собираюсь разработать приложение по типу &quot;Find my...

Документация к библиотеке OSMDROID
Уважаемые форумчане! Кто программирует для Android. Подскажите. Есть...

Вылитает при длительном нажатии очистки строки
Вылетает при длительном нажатии в поле edit при долгом нажатии на кнопки...

Как стилизовать на карте гугл значок маркера?
с таким не сталкивалась ни когда где об этом почитать чтоб ясно все стало

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2015, 11:33

Определение координат курсора на карте поверх маркера
Здравствуйте. У меня есть на странице гугл карта на которую в качестве...

При нажатии на ссылку на карте должна появляться вкладка с адресом и телефоном
Здравствуйте! Нужна помощь. Нас странице (внизу) есть меню и карта...

Использование данных из dataGridView для отображения на карте
Есть такая проблема. В Form1 создан gMapControl1private void...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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