10

Я работаю над картографическим приложением. И я хочу показать некоторые представления в MapView. Я использую метод:Google Google maps transparent

mapView.setAlpha(0.5f); 

Ничто не происходит с MAPview. Когда я пытаюсь применить этот метод к моим кнопкам, он отлично работает, даже применив его к родительскому представлению mapView делает каждый дочерний вид прозрачным, за исключением mapView.

Как мы можем сделать mapView прозрачным? Я рассмотрел другие вопросы здесь, и я не могу найти решение.

Есть ли какой-либо специальный метод в mapView.getMap(), который мы можем использовать, чтобы сделать его прозрачным?

+0

Я не думаю, что вы могли бы достичь этого с помощью mapview ... даже будучи ViewGroup, Google добавляет много вещей. Попробуйте использовать другую библиотеку карт или переосмыслите свой UI/UX. Кстати ... почему бы вам хотелось чего-то подобного, будет выглядеть очень плохо, если этого можно добиться. –

+0

^что он сказал, что все равно будет выглядеть плохо. Избегайте этой идеи, как чума .. вместо этого делайте вещи сверху прозрачными (кнопки, значки и т. Д.) –

+0

Я знаю, что это будет выглядеть плохо, но как вы это добьетесь? Что добавляет Google, что делает его всегда непрозрачным? Какая другая библиотека карт станет лучшей альтернативой? @MarianoZorrilla – Marlon

ответ

8

Вы можете установить прозрачность для карты, используя View.setAlpha() (documentation). Вот рабочий пример:

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 
    } 
} 

Результат выглядит следующим образом (как вы видите текст виден из-за прозрачность карты):

enter image description here

1

Вы можете сделать это с помощью метода SetAlpha (флоат) вашей ссылки MapView, как это:

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

Если вы используете MapFragment, а затем просто использовать SetAlpha (поплавок) для MapFragment.

0

Используйте Framelayout, где вы разместите свои 2 вида (CameraView и MapView) над ними. И используйте атрибут xml alpha, чтобы сделать MapView прозрачным.

Смежные вопросы