How to get click event of the marker text

前端 未结 4 957
渐次进展
渐次进展 2020-12-31 00:07

I am displaying google map api v2 in my app. I have set some markers in the map. I have also set title and snippet on the markers which are shown when you click the marker.<

相关标签:
4条回答
  • 2020-12-31 00:43
    GoogleMap mGoogleMap;  
    mGoogleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
    
                        @Override
                        public void onInfoWindowClick(Marker arg0) {
                            Intent intent = new Intent(getBaseContext(), Activity.class);
                            String reference = mMarkerPlaceLink.get(arg0.getId());
                            intent.putExtra("reference", reference);
    
                            // Starting the  Activity
                            startActivity(intent);
                            Log.d("mGoogleMap1", "Activity_Calling");
                        }
                    });
    
    0 讨论(0)
  • 2020-12-31 00:59

    To achieve this you need to implement setOnInfoWindowClickListener in your getInfoContents method so that a click on your infoContents window will wake the listener to do what you want, you do it like so:

       map.setInfoWindowAdapter(new InfoWindowAdapter() {
    
                // Use default InfoWindow frame
                @Override
                public View getInfoWindow(Marker args) {
                    return null;
                }
    
                // Defines the contents of the InfoWindow
                @Override
                public View getInfoContents(Marker args) {
    
                    // Getting view from the layout file info_window_layout
                    View v = getLayoutInflater().inflate(R.layout.info_window_layout, null);
    
                    // Getting the position from the marker
                    clickMarkerLatLng = args.getPosition();
    
                    TextView title = (TextView) v.findViewById(R.id.tvTitle);
                    title.setText(args.getTitle());
    
                    map.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {          
                        public void onInfoWindowClick(Marker marker) 
                        {
                            if (SGTasksListAppObj.getInstance().currentUserLocation!=null)
                            {   
                                if (String.valueOf(SGTasksListAppObj.getInstance().currentUserLocation.getLatitude()).substring(0, 8).contains(String.valueOf(clickMarkerLatLng.latitude).substring(0, 8)) &&
                                        String.valueOf(SGTasksListAppObj.getInstance().currentUserLocation.getLongitude()).substring(0, 8).contains(String.valueOf(clickMarkerLatLng.longitude).substring(0, 8)))
                                {
                                    Toast.makeText(getApplicationContext(), "This your current location, navigation is not needed.",  Toast.LENGTH_SHORT).show();
                                }
                                else
                                {
                                    FlurryAgent.onEvent("Start navigation window was clicked from daily map");
                                    tasksRepository = SGTasksListAppObj.getInstance().tasksRepository.getTasksRepository();
                                    for (Task tmptask : tasksRepository)
                                    {
                                        String tempTaskLat = String.valueOf(tmptask.getLatitude());
                                        String tempTaskLng = String.valueOf(tmptask.getLongtitude());
    
                                        Log.d(TAG, String.valueOf(tmptask.getLatitude())+","+String.valueOf(clickMarkerLatLng.latitude).substring(0, 8));
    
                                        if (tempTaskLat.contains(String.valueOf(clickMarkerLatLng.latitude).substring(0, 8)) && tempTaskLng.contains(String.valueOf(clickMarkerLatLng.longitude).substring(0, 8)))
                                        {  
                                            task = tmptask;
                                            break;
                                        }
                                    }
    
                                    Intent intent = new Intent(getApplicationContext() ,RoadDirectionsActivity.class);
                                    intent.putExtra(TasksListActivity.KEY_ID, task.getId());
                                    startActivity(intent);
    
                                }
                            }
                            else
                            {
                                Toast.makeText(getApplicationContext(), "Your current location could not be found,\nNavigation is not possible.",  Toast.LENGTH_SHORT).show();
                            }
                        }
                    });
    
                    // Returning the view containing InfoWindow contents
                    return v;
    
                }
            });  
    
    0 讨论(0)
  • 2020-12-31 00:59
    /**
     * adding individual markers, displaying text on on marker click on a
     * bubble, action of on marker bubble click
     */
    private final void addLocationsToMap() {
        int i = 0;
        for (Stores store : storeList) {
            LatLng l = new LatLng(store.getLatitude(), store.getLongtitude());
    
            MarkerOptions marker = new MarkerOptions()
                    .position(l)
                    .title(store.getStoreName())
                    .snippet("" + i)
                    .icon(BitmapDescriptorFactory
                            .defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
            googleMap.addMarker(marker);
            ++i;
        }
    
        googleMap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
    
            @Override
            public void onInfoWindowClick(Marker marker) {
    
                try {
                    popUpWindow.setVisibility(View.VISIBLE);
                    Stores store = storeList.get(Integer.parseInt(marker
                            .getSnippet()));
    
                    // set details
                    email.setText(store.getEmail());
                    phoneNo.setText(store.getPhone());
                    address.setText(store.getAddress());
    
                    // setting test value to phone number
                    tempString = store.getPhone();
                    SpannableString spanString = new SpannableString(tempString);
                    spanString.setSpan(new UnderlineSpan(), 0,
                            spanString.length(), 0);
                    phoneNo.setText(spanString);
    
                    // setting test value to email
                    tempStringemail = store.getEmail();
    
                    SpannableString spanString1 = new SpannableString(tempStringemail);
                    spanString1.setSpan(new UnderlineSpan(), 0, spanString1.length(), 0);
                    email.setText(spanString1);
    
                    storeLat = store.getLatitude();
                    storelng = store.getLongtitude();
    
                } catch (ArrayIndexOutOfBoundsException e) {
                    Log.e("ArrayIndexOutOfBoundsException", " Occured");
                }
    
            }
        });
    
    }
    
    0 讨论(0)
  • 2020-12-31 01:01

    To set a title on a marker:

    marker.showInfoWindow();
    

    To set a click listener on title:

    googleMap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
    
        @Override
        public void onInfoWindowClick(Marker arg0) {
            // TODO Auto-generated method stub
    
        }
    });
    
    0 讨论(0)
提交回复
热议问题