2013-07-26 9 views
10

Piszę aplikację na Androida za pomocą Google map-V2 API. Chcę przesuwać pasek akcji, tak jak w aplikacji mapy Google. I włączyłem przycisk "Moja lokalizacja". Problem polega na tym, że mój przycisk lokalizacji znajduje się pod paskiem akcji. Czy istnieje sposób na zmianę położenia tego przycisku. Chcę utworzyć aplikację podobną do Map. Jestem nowy na Androida, więc proszę o pomoc.Jak zmienić położenie przycisku mojej lokalizacji w Google Map2 w Androidzie?

Odpowiedz

6

Nie można zmienić elementu MyLocationButton w żaden sposób, ale można go włączyć i wyłączyć. Dla tego jest już request.

Zapraszam na disable przycisk i po prostu zaimplementuj własny.

Trzeba coś takiego:

mMap.getUiSettings().setMyLocationButtonEnabled(false); 
+0

proszę o pomoc, Jak mogę dodać przycisk na górze mapy. i jak uzyskać moją lokalizację z nowo dodanego przycisku. –

+0

Byłoby lepiej otworzyć nowe pytanie na ten temat. –

+0

jeśli wyłączam MyLocationButton w jaki sposób mogę pokazać lokalizację w podobny sposób? –

12

Można ustawić padding na mapie.

To rozwiązało problem - nakładki na mapę na górze (użyłem 48 dipów, ale można nałożyć pasek akcji, a następnie uzyskać rzeczywistą wysokość It (android: atr/actionBarSize)?)

mapFragment.getMap().setPadding(0, dpToPx(48), 0, 0); 

(DP do PX funkcja jest od this SO answer)

+0

Ustawienie padding programowo działało dla mnie, podczas gdy ustawienie go w układzie xml nie było – Radu

2

Wystarczy użyć GoogleMap.setPadding (lewy, górny, prawy, dolny), który pozwala na wskazanie części mapy, które mogą być zasłonięte przez inne widoki. Ustawienie wypełnienia zmienia położenie standardowych elementów sterujących mapą, a aktualizacje aparatu będą wykorzystywać wyściełany region.

https://developers.google.com/maps/documentation/android/map#map_padding

+0

Ładna sztuczka. Jak uzyskać bieżące wypełnienie? Metoda GoogleMap.getPadding() nie istnieje ... – Wooff

7

Możesz zmienić swój przycisk lokalizacji łatwo

View plusMinusButton = suppormanagerObj.getView().findViewById(1); 
View locationButton = suppormanagerObj.getView().findViewById(2); 

// and next place it, for exemple, on bottom right (as Google Maps app) 
RelativeLayout.LayoutParams rlp = (RelativeLayout.LayoutParams)  locationButton.getLayoutParams(); 
// position on right bottom 
rlp.addRule(RelativeLayout.ALIGN_PARENT_TOP, 0); 
rlp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE); 

Chage LocationButton można również ustawić dopełnienie po ustawieniu dostosowania przycisku lokalizacji

mMap.setPadding(0, 0, 30, 105); 
+0

Jak ustawić na dole | lewo? –

+0

Musisz użyć aMap.setPadding. Ta metoda jest odpowiedzialna za ustawienie położenia obrazu ICON położenia. – Ramkailash

3

I rozwiązać ten problem w moim fragmencie mapy poprzez ponowne pozycjonowanie mojego loc Przycisk acji w prawym dolnym rogu widoku przy użyciu kodu poniżej, tu jest moje mapy Activity.java: -

dodać tej linii kodu w onCreate metoda(),

SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
       .findFragmentById(R.id.map); 
     mapView = mapFragment.getView(); 
     mapFragment.getMapAsync(this); 

i tutaj jest onMapReady () kod: -

@Override 
     public void onMapReady(GoogleMap googleMap) { 
      mMap = googleMap; 
      mMap.setMyLocationEnabled(true); 

      // Add a marker in Sydney and move the camera 
      LatLng sydney = new LatLng(-34, 151); 
      mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney")); 
      mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)); 

      if (mapView != null && 
        mapView.findViewById(Integer.parseInt("1")) != null) { 
       // Get the button view 
       View locationButton = ((View) mapView.findViewById(Integer.parseInt("1")).getParent()).findViewById(Integer.parseInt("2")); 
       // and next place it, on bottom right (as Google Maps app) 
       RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) 
         locationButton.getLayoutParams(); 
       // position on right bottom 
       layoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP, 0); 
       layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE); 
       layoutParams.setMargins(0, 0, 30, 30); 
      } 

     } 

Mam nadzieję, że rozwiąże to twój problem. Dzięki.

0

Zamiast rozwiązań findViewById użyłem findViewWithTag, aby uzyskać odniesienie do przycisku. Używanie sznurka wydawało mi się bardziej czytelne i rzetelne.

View myLocationButton = mMap.findViewWithTag("GoogleMapMyLocationButton"); 
    RelativeLayout.LayoutParams rlp = (RelativeLayout.LayoutParams) myLocationButton.getLayoutParams(); 
    rlp.addRule(RelativeLayout.ALIGN_PARENT_TOP, 0); 
    rlp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE); 
Powiązane problemy