Skip to content
This repository has been archived by the owner on Aug 8, 2023. It is now read-only.

Marker clicked event is not fired #8236

Closed
kingfisherphuoc opened this issue Mar 1, 2017 · 13 comments
Closed

Marker clicked event is not fired #8236

kingfisherphuoc opened this issue Mar 1, 2017 · 13 comments
Assignees
Labels
Android Mapbox Maps SDK for Android

Comments

@kingfisherphuoc
Copy link

Platform: Android
Mapbox SDK version: 5.0 Snapshot

Steps to trigger behavior

  1. Set listener for Maker event:
mMapboxMap.setOnMarkerClickListener(new MapboxMap.OnMarkerClickListener() {
            @Override
            public boolean onMarkerClick(@NonNull final Marker marker) {
                LogUtils.e("OnMarkerClick!!!"); // never go here...
                return false;
            }
        });
  1. Add marker into MapView:
    // add marker adapter
    mMapboxMap.getMarkerViewManager().addMarkerViewAdapter(new CustomMarkerAdapter(this.getContext()));
    // add new markerview into mapview
    new CustomMarkerViewOptions().anchor(0.5f, 0.5f).position(marker.getLatLng())

Expected behavior

The onMarkerClick is always called before getInfoWindow(@NonNull final Marker marker)

Actual behavior

The onMarkerClick is never called in this version. Previous SDK version (4.2), the event is always fired before getInfoWindow(@NonNull final Marker marker).

@tobrun tobrun added the Android Mapbox Maps SDK for Android label Mar 1, 2017
@tobrun
Copy link
Member

tobrun commented Mar 1, 2017

@kingfisherphuoc thank you for reaching out. Instead of hooking into MarkerClickListener you will need to hook into MarkerViewClickListener.

        mapboxMap.getMarkerViewManager().setOnMarkerViewClickListener(new MapboxMap.OnMarkerViewClickListener() {
          @Override
          public boolean onMarkerClick(@NonNull Marker marker, @NonNull View view, @NonNull MapboxMap.MarkerViewAdapter adapter) {
            Timber.e(marker.toString());
            return false;
          }
        });

@tobrun tobrun closed this as completed Mar 1, 2017
@kingfisherphuoc
Copy link
Author

kingfisherphuoc commented Mar 3, 2017

@tobrun I tried with MarkerViewClickListener and I have other problems:

  1. It's really hard to trigger this event when the MarkerView is big and complicated. (My Markerview is 100dp width, and I must click at near the bottom center of Marker to trigger the event, otherwise, nothing occurs).
  2. The onMarkerClick is called twice (I am trying to show a dialog when click --> double dialogs occur)
 mMapboxMap.getMarkerViewManager().setOnMarkerViewClickListener(new MapboxMap.OnMarkerViewClickListener() {
            @Override
            public boolean onMarkerClick(@NonNull Marker marker, @NonNull View view, @NonNull MapboxMap.MarkerViewAdapter adapter) {
                LogUtils.e("OnClick");
                return false;
            }
        });

@PhanVanLinh
Copy link

@kingfisherphuoc The onMarkerClick is called twice (I am trying to show a dialog when click --> double dialogs occur). How do you solve this problem?

@AlexSheiko
Copy link

AlexSheiko commented Jul 23, 2017

@kingfisherphuoc, I have the same problem. Using Mapbox 5.0.2, I believe.

I'm attempting to open activities instead of dialogs, so as a temporary workaround I added android:launchMode="singleInstance" to the manifest file of the target activity.

@grote
Copy link

grote commented Oct 19, 2017

Instead of hooking into MarkerClickListener you will need to hook into MarkerViewClickListener.

@tobrun I just ran into this myself and would suggest you at least improve the documentation here.

MapboxMap#setOnMarkerClickListener() says:

Sets a callback that's invoked when the user clicks on a marker.

This sounds like it would do what I want it to do. For me it is still not clear what the difference to the other method is.

@tobrun
Copy link
Member

tobrun commented Oct 19, 2017

@grote thank you for the ping! I'm not going to add this to the javadoc as we are deprecating markerView in total and you won't be running in this issue anymore since #9365

@beefarm
Copy link

beefarm commented Nov 9, 2017

@tobrun just upgraded from 4.2.0 to 5.2.0, and like others I am seeing the issue of onMarkerCick no longer being fired as mentioned here and in 8159. My (previously working) code is essentially identical to that of the original poster. Not clear what the solution is, as early suggestions were to instead use MarkerViewClickListener, but that is apparently being deprecated.

@tobrun
Copy link
Member

tobrun commented Nov 9, 2017

MarkerViews in total have been deprecated not just the clicklistener

@igor-nm
Copy link

igor-nm commented Nov 9, 2017

Hi guys, here may not be the right place for this question, but @tobrun would like to know if it is possible to identify a double click on the map marker, or on the map itself, since I need to do an action if a map item have a double click ....

@tobrun
Copy link
Member

tobrun commented Nov 9, 2017

@igor-nm a double tap gesture is recognize as a zoom in gesture. Afaik we don't allow overriding that behaviour though you could try with MapView#OnTouch.

@igor-nm
Copy link

igor-nm commented Nov 9, 2017

Thank you @tobrun, I go testing this method

@beefarm
Copy link

beefarm commented Nov 9, 2017

@tobrun wrote

MarkerViews in total have been deprecated not just the clicklistener

Understood, which is why I asked. So how does one get a custom onMarkerClick to fire with 5.x (as it did in 4.x but no longer seems to), given that the previously-offered solution of using

mapboxMap.getMarkerViewManager().setOnMarkerViewClickListener...

has been deprecated? I need to fire a custom behavior, and not show an InfoWindow, when a marker is clicked, and that no longer seems to work with 5.x.

Thanks -

@malexandersalazar
Copy link

So, what should I do to handle the click event for a custom marker? Nothing works.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Android Mapbox Maps SDK for Android
Projects
None yet
Development

No branches or pull requests

9 participants