gustaría añadir un control de zoom del mapa. Yo también quiero el diseño de la posición del Control de zoom en lugar de la predeterminada medio de la parte inferior de la posición. Puedo hacer esto por getZoomControl pero está en desuso.

Podría alguien decirme cómo hacerlo con setBuildtInZoomControls?

OriginalEl autor Mak Sing | 2009-11-20

6 Comentarios

  1. 9

    Esta es la forma en que yo tengo la mía de trabajo, finalmente, mediante la incorporación de un ZoomControl en XML de diseño).

    mapView = (MapView) this.findViewById(R.id.mapView);
    
    ZoomControls zoomControls = (ZoomControls) findViewById(R.id.zoomcontrols);
    zoomControls.setOnZoomInClickListener(new OnClickListener() {
            public void onClick(View v) {
                mapView.getController().zoomIn();
            }
    });
    zoomControls.setOnZoomOutClickListener(new OnClickListener() {
            public void onClick(View v) {
                mapView.getController().zoomOut();
            }
    });

    Ver: Siempre mostrar los controles de zoom en un MapView

    OriginalEl autor duskstriker

  2. 1
    mapView.getZoomButtonsController()

    Aunque esto es indocumentados (al menos en el javadoc disponible aquí: com.google.android.mapas) estoy bastante seguro de que este es el reemplazo para el obsoleto getZoomControls

    Edit: acabo de enterar de que es documentado, no sólo en la api de google docs, pero no aquí: ZoomButtonsController en developer.android.com

    Entonces, usted puede llamar a getContainer () o getZoomControls () (dependiendo de lo que quieras hacer) para obtener acceso a los controles de zoom de la vista.

    Y, a continuación, hacer algo como

    RelativeLayout.LayoutParams zoomParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    zoomParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
    mapView.getZoomButtonsController().getZoomControls().setLayoutParams(zoomParams);

    aunque tengo que admitir que no estoy seguro de lo que el diseño de la visualización de los usos, podría ser LinearLayout así.

    El ‘RelativeLayout.LayoutParams’ lanza una clase elenco de excepción. FrameLayout.LayoutParams es lo que se requiere, aunque estoy perplejo sobre cómo conseguir que esto funcione

    OriginalEl autor slup

  3. 1
    LinearLayout zoomLayout = (LinearLayout) findViewById(R.id.layout_zoom);
    View mapController = mapView.getZoomButtonsController().getZoomControls();
    zoomLayout.addView(mapController, new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

    OriginalEl autor user1634451

  4. 0
    RelativeLayout relativeLayout = new RelativeLayout(this);
    setContentView(relativeLayout);
    
    final MapView mapView = new MapView(this, DEBUG_MAP_API_KEY);
    RelativeLayout.LayoutParams mapViewLayoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT,RelativeLayout.LayoutParams.FILL_PARENT );
    relativeLayout.addView(mapView, mapViewLayoutParams);
    
    RelativeLayout.LayoutParams zoomControlsLayoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT );
    zoomControlsLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
    zoomControlsLayoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
    
    relativeLayout.addView(mapView.getZoomControls(), zoomControlsLayoutParams);
    
    mapView.setClickable(true);
    mapView.setEnabled(true);

    Creo que esto debería funcionar … Espero que esto sea útil 🙂

    Esto también utiliza el obsoleto getZoomControls funciones de la mapview.

    OriginalEl autor Flash

  5. 0

    La solución proporcionada por George en La colocación de los Controles de Zoom en un MapView permite el diseño de la construcción en los controles de zoom mediante el uso de la gravedad de los atributos. Este atributo posiciones del elemento en su contenedor, que parece que se encuentra en la parte inferior de la pantalla, de modo que no es posible la posición de los controles de zoom en la parte superior de la pantalla mediante la publicación de los controles de zoom.

    En conclusión a la que puede el diseño de la construcción en los controles de zoom haciendo:

    ((FrameLayout.LayoutParams) mapView.getZoomButtonsController().getZoomControls().getLayoutParams()).gravity = Gravity.RIGHT;

    Recordar que los controles de zoom están contenidas en un FrameLayout por lo tanto, cualquier intente utilizar reglas como RelativeLayout.ALIGN_PARENT_BOTTOM o RelativeLayout.ALIGN_PARENT_TOP le llevará sólo para el dolor y la tristeza.

    OriginalEl autor gantzer89

Dejar respuesta

Please enter your comment!
Please enter your name here