10

Bir harita uygulaması üzerinde çalışıyorum. Ve MapView altında bazı görüşler göstermek istiyorum. Ben yöntemini kullanıyorum:Android Google haritaları şeffaflık

mapView.setAlpha(0.5f); 

Hiçbir şey MapView olur. Bu yöntemi düğmelerime uyguladığımda, iyi çalışır, hatta haritanın ana görünümüne uygulanırken bile kullanılır.

Haritayı nasıl şeffaf yapabiliriz? Burada başka sorulara baktım ve bir çözüm bulamıyorum.

MapView.getMap() ürününde şeffaf hale getirmek için kullanabileceğimiz bazı özel yöntemler var mı?

+0

Bunu harita görünümüyle başarabileceğinizi sanmıyorum ... hatta ViewGroup olsanız bile Google buna pek çok şey ekliyor. Başka bir harita kütüphanesi kullanmayı deneyin veya UI/UX'inizi yeniden düşünün. BTW ... neden böyle bir şey istersiniz, başarırsanız gerçekten kötü görünecektir. –

+0

^dedi ki, bu zaten kötü görünecek. Bu fikri veba gibi önlemek… bunun yerine üstte olanları şeffaf hale getirin (düğmeler, simgeler, vb ...) –

+0

Kötü görüneceğini biliyorum, ama nasıl başaracaksınız? Google bunu her zaman opak yapan neye ekler? Başka hangi harita kütüphanesi en iyi alternatif olabilir? @MarianoZorrilla – Marlon

cevap

8

Harita için saydamlığı View.setAlpha() (documentation) kullanarak ayarlayabilirsiniz. İşte çalışma örneği:

activity_maps.xml:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:text="THIS TEXT IS VISIBLE" 
     android:textSize="24sp" 
     android:gravity="center"/> 

    <fragment 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/map" 
     tools:context=".MapsActivity" 
     android:name="com.google.android.gms.maps.SupportMapFragment" /> 

</RelativeLayout> 

MapsActivity.java

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_maps); 

     ((SupportMapFragment) getSupportFragmentManager() 
       .findFragmentById(R.id.map)).getMapAsync(this); 
    } 

    @Override 
    public void onMapReady(GoogleMap googleMap) { 
     Marker m = googleMap.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker")); 
     m.showInfoWindow(); 

     View v = getSupportFragmentManager().findFragmentById(R.id.map).getView(); 
     v.setAlpha(0.5f); // Change this value to set the desired alpha 
    } 
} 

sonuç gördüğünüz gibi metin görülebilir (şuna benzer nedeniyle haritanın saydamlığı):

enter image description here

1

Bunu, senin MapView referans setAlpha (şamandıra) yöntemiyle yapabilirsiniz:

mMapView = (MapView) findViewById(R.id.map); 
mMapView.onCreate(savedInstanceState); 
mMapView.getMapAsync(this); 
mMapView.setAlpha(0.5f); 

Eğer MapFragment kullanıyorsanız, o zaman sadece MapFragment için setAlpha (şamandıra) kullanın.

0

2 Görünümlerinizi (CameraView ve MapView) kendi kendilerine yerleştirdiğiniz bir Framelayout kullanın. MapView'ı saydam yapmak için xml özniteliğini kullanın.

İlgili konular