Google Maps Android API v2 detect long press on map and add marker not working

android, google-maps-android-api-2, google-maps-markers, latitude-longitude, supportmapfragment

Solution

I used this. It worked.

GoogleMap gm;

gm.setOnMapLongClickListener(this); 

@Override    
public void onMapLongClick(LatLng point) {
    gm.addMarker(new MarkerOptions()
        .position(point)
        .title("You are here")           
        .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED)));  
}

Problem

I want to add a marker on map with long press. `Toast` in `onMapClick()` was display with normal tap. But long press is not working. `Toast` in `onMapLongClick()` is not displayed with long press. Also marker is not displayed on map. I'm using `SupportMapFragment` because I want to use my application on Android 2.x devices. I have tested my app on Nexus One which has Android version 2.3.7. This is my code. ``` public class MainActivity extends FragmentActivity implements OnMapClickListener, OnMapLongClickListener { final int RQS_GooglePlayServices = 1; private GoogleMap myMap; Location myLocation; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); FragmentManager myFragmentManager = getSupportFragmentManager(); SupportMapFragment mySupportMapFragment = (SupportMapFragment) myFragmentManager .findFragmentById(R.id.map); myMap = mySupportMapFragment.getMap(); myMap.setMyLocationEnabled(true); myMap.setMapType(GoogleMap.MAP_TYPE_HYBRID); // myMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); // myMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE); // myMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN); myMap.setOnMapClickListener(this); myMap.setOnMapLongClickListener(this); } @Override protected void onResume() { super.onResume(); int resultCode = GooglePlayServicesUtil .isGooglePlayServicesAvailable(getApplicationContext()); if (resultCode == ConnectionResult.SUCCESS) { Toast.makeText(getApplicationContext(), "isGooglePlayServicesAvailable SUCCESS", Toast.LENGTH_LONG) .show(); } else { GooglePlayServicesUtil.getErrorDialog(resultCode, this, RQS_GooglePlayServices); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onMapClick(LatLng point) { myMap.animateCamera(CameraUpdateFactory.newLatLng(point)); Toast.makeText(getApplicationContext(), point.toString(), Toast.LENGTH_LONG).show(); } @Override public void onMapLongClick(LatLng point) { myMap.addMarker(new MarkerOptions().position(point).title( point.toString())); Toast.makeText(getApplicationContext(), "New marker added@" + point.toString(), Toast.LENGTH_LONG) .show(); } } ``` How can I solve this ?

Original source