Google Maps Android API v2 detecta un clic largo en el mapa y agrega marcador que no funciona
Quiero agregar marcador en el mapa con un clic largo. Pero no está funcionando. Normal de clic está trabajando. Toast
en onMapClick()
se muestra con un toque normal. Pero el clic largo no funciona. Toast
en onMapLongClick()
no se muestra con un clic largo. También el marcador no se muestra en el mapa.
Estoy utilizando SupportMapFragment
porque quiero usar mi aplicación en dispositivos android 2.x. He probado mi aplicación en el nexo uno que tiene Android versión 2.3.7.
- Android Maps V2 pérdida de memoria LocationClientHelper
- Google map dentro de otro fragmento - Error al llamar a getMapAsync
- GetMapAsync () en el fragmento
- Google Map v2 dentro del fragmento android
- Cómo utilizar SupportMapFragment dentro de un fragmento?
Este es mi código.
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(); } }
Como puedo resolver esto ?
- Android no puede encontrar el método de símbolo getMap ()
- Android SupportMapFragment Exception Error
- Android GoogleMap v2 se recorta o no se muestra completamente
- MapFragment.getMap () devuelve null
- Mostrar MapFragment en un DialogFragment
- Cambiar fragmentos - Google Map Fragmento V2 - La actividad ha sido destruida Error
- Google Maps Android API v2 SoporteMapFragmento de pérdida de memoria
- Cambiar de fragmento con fragmento de mapa deja una pantalla negra
He usado esto. Funcionó.
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))); }
No tienes ningún icono establecido. Tratar:
@Override public void onMapLongClick(LatLng point) { myMap.addMarker(new MarkerOptions() .position(point) .title(point.toString()) .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED))); Toast.makeText(getApplicationContext(), "New marker added@" + point.toString(), Toast.LENGTH_LONG) .show(); }
googleMap = supportMapFragment.getMap(); // Setting a click event handler for the map googleMap.setOnMapClickListener(new OnMapClickListener() { @Override public void onMapClick(LatLng latLng) { // Creating a marker MarkerOptions markerOptions = new MarkerOptions(); // Setting the position for the marker markerOptions.position(latLng); // Setting the title for the marker. // This will be displayed on taping the marker markerOptions.title(latLng.latitude + " : " + latLng.longitude); // Clears the previously touched position googleMap.clear(); // Animating to the touched position googleMap.animateCamera(CameraUpdateFactory.newLatLng(latLng)); // Placing a marker on the touched position googleMap.addMarker(markerOptions); } });
O
mMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() { @Override public void onMapLongClick (LatLng latLng){ Geocoder geocoder = new Geocoder(MapMarkerActivity.this); List<Address> list; try { list = geocoder.getFromLocation(latLng.latitude, latLng.longitude, 1); } catch (IOException e) { return; } Address address = list.get(0); if (marker != null) { marker.remove(); } MarkerOptions options = new MarkerOptions() .title(address.getLocality()) .position(new LatLng(latLng.latitude, latLng.longitude)); marker = mMap.addMarker(options); } });
- Cajón de navegación del menú lateral de ActionBarSherlock
- ¿Cómo pasar los parámetros de Map <String, String> o el objeto a la petición POST mediante Retrofit?