Cómo dibujar un círculo alrededor de un alfiler utilizando API de Google API v2
Estoy utilizando la nueva API (Google Map API V2) para mi aplicación Android, he hecho la creación del mapa y la adición de marcadores a ella, ahora mi tarea es crear manualmente un círculo alrededor de cualquier marcador y también quiero proporcionar un Funcionalidad al usuario que puede aumentar el radio de ese círculo en consecuencia, para ello he dado una barra, cuando el usuario aumenta esa barra el radio de círculo aumentará y viceversa.
Si alguien sabe cómo hacerlo usando Google Map API V2, por favor, ayuda,
- ¿Cómo mostrar varios marcadores en MapFragment en Google Map API v2?
- ¿Cómo obtener la ubicación actual de este código de mapa? También intento recibir datos del vehículo del servidor cuando estoy abierto el mapa
- Google Map Android API v2 no puede mostrar el mapa en la aplicación de Google Play Store
- Clip o quitar una parte de la polilínea google maps v2
- GoogleMap.getMyLocation (); No se puede obtener la ubicación actual
Gracias
- Google Maps v2 no se muestra después de publicar en el mercado de juegos
- Google Map API V2 - ¿Cómo puedo mantener un marcador en el centro de la pantalla mientras el usuario está desplazando el mapa?
- MapFragment.getMap () devuelve null
- Google Map V2 en la mitad superior de la pantalla de Android y la vista de lista en la mitad inferior de la pantalla de Android
- Dibuje cinco círculos transparentes en el mapa google v2 tomando la ubicación actual como el centro del círculo
- "Los servicios de Google Play se están actualizando" en Google Maps API
- Google mapa v2 módulo. La aplicación de Android no muestra el mapa dentro de la vista de mapa
- Google Maps Android api v2 y ubicación actual
He estado trabajando en esto también y he encontrado la siguiente solución. Todavía no es perfecto, porque tuve que hacer un lienzo muy grande para evitar que el borde del círculo se torne borroso.
private void addCircleToMap() { // circle settings int radiusM = // your radius in meters double latitude = // your center latitude double longitude = // your center longitude LatLng latLng = new LatLng(latitude,longitude); // draw circle int d = 500; // diameter Bitmap bm = Bitmap.createBitmap(d, d, Config.ARGB_8888); Canvas c = new Canvas(bm); Paint p = new Paint(); p.setColor(getResources().getColor(R.color.green)); c.drawCircle(d/2, d/2, d/2, p); // generate BitmapDescriptor from circle Bitmap BitmapDescriptor bmD = BitmapDescriptorFactory.fromBitmap(bm); // mapView is the GoogleMap mapView.addGroundOverlay(new GroundOverlayOptions(). image(bmD). position(latLng,radiusM*2,radiusM*2). transparency(0.4f)); }
– EDIT – Google actualizó la API. Ahora puedes añadir fácilmente un círculo a tu mapa: https://developers.google.com/maps/documentation/android/shapes?hl=nl#circles
Google hecho es simple en mapas v2. El siguiente fragmento muestra ambos marcadores de dibujo y círculos junto con la actualización de sus posiciones juntos.
private Circle mCircle; private Marker mMarker; private GoogleMap mGoogleMap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mGoogleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.mapFragment)).getMap(); mGoogleMap.setMyLocationEnabled(true); mGoogleMap.setOnMyLocationChangeListener(new GoogleMap.OnMyLocationChangeListener() { @Override public void onMyLocationChange(Location location) { LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude()); if(mCircle == null || mMarker == null){ drawMarkerWithCircle(latLng); }else{ updateMarkerWithCircle(latLng); } } }); } private void updateMarkerWithCircle(LatLng position) { mCircle.setCenter(position); mMarker.setPosition(position); } private void drawMarkerWithCircle(LatLng position){ double radiusInMeters = 100.0; int strokeColor = 0xffff0000; //red outline int shadeColor = 0x44ff0000; //opaque red fill CircleOptions circleOptions = new CircleOptions().center(position).radius(radiusInMeters).fillColor(shadeColor).strokeColor(strokeColor).strokeWidth(8); mCircle = mGoogleMap.addCircle(circleOptions); MarkerOptions markerOptions = new MarkerOptions().position(position); mMarker = mGoogleMap.addMarker(markerOptions); }
Esta es mejor:
double radiusInMeters = 100.0; //red outline int strokeColor = 0xffff0000; //opaque red fill int shadeColor = 0x44ff0000; CircleOptions circleOptions = new CircleOptions().center(position).radius(radiusInMeters).fillColor(shadeColor).strokeColor(strokeColor).strokeWidth(2); mCircle = map.addCircle(circleOptions); MarkerOptions markerOptions = new MarkerOptions().position(position); mMarker = map.addMarker(markerOptions);
Tal vez le ayude:
GoogleMap map; // ... get a map. // Add a circle in Sydney Circle circle = map.addCircle(new CircleOptions() .center(new LatLng(-33.87365, 151.20689)) .radius(10000) .strokeColor(Color.RED) .fillColor(Color.BLUE));
De aquí :
AQUÍ
- Cómo centrar la imagen verticalmente en este RelativeLayout
- Combinación de dos imágenes de mapa de bits (lado a lado)