9

Abbiamo una mia posizione Icona in google maps come
My Location Icon voglio cambiare questo pulsante con l'icona con la mia icona desiderata non v'è alcun modo per sostituire questa icona nelle Google Maps. Come posso farlo in Android.Posso cambiare la mia posizione Button nella Android Maps

Poiché la domanda non è chiara, aggiungo ulteriori informazioni. In https://support.google.com/maps/answer/3093609?hl=en si possono vedere nella sezione Ottieni indicazioni stradali in base alla posizione al punto numero 2 l'icona era stato dimostrato enter image description here

La sezione appena sotto a Fissate la vostra Località-> Capire Posizione simboli spiega anche queste icone.

Come potete vedere non è il marcatore è un pulsante di posizione come avevo scritto Quindi la mia domanda è come posso cambiare quell'icona (pulsante di posizione) per l'icona desiderata.

Vedi questo tasto icona viene mostrata l'icona pic google maps enter image description here

+0

[questo] (http://stackoverflow.com/questions/14826345/android-maps-api-v2-change-mylocation-icon) può aiutarti a cambiare l'icona –

+4

Chiunque stia marcando, se lo pensano è troppo facile quindi si prega di fornire la risposta quindi segnarlo – Mohit

+0

@SonuRaj Quello che hai detto è cambiare l'icona mia posizione ma voglio cambiare la forma del pulsante che si trova in alto a destra sulla mappa – Mohit

risposta

4

Sì, è possibile,

ho risolto questo problema nella mia mappa frammento da ri posizionando il tasto posizione in basso a destra angolo di vista utilizzando il codice qui sotto, ecco la mia MapsActivity.java: -

import android.support.v4.app.FragmentActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.RelativeLayout; 

import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.OnMapReadyCallback; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.MarkerOptions; 

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { 

    private GoogleMap mMap; 
    View mapView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.fragment_map); 
     // Obtain the SupportMapFragment and get notified when the map is ready to be used. 
     SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
       .findFragmentById(R.id.map); 
     mapView = mapFragment.getView(); 
     mapFragment.getMapAsync(this); 
      } 

    /** 
    * Manipulates the map once available. 
    * This callback is triggered when the map is ready to be used. 
    * This is where we can add markers or lines, add listeners or move the camera. In this case, 
    * we just add a marker near Sydney, Australia. 
    * If Google Play services is not installed on the device, the user will be prompted to install 
    * it inside the SupportMapFragment. This method will only be triggered once the user has 
    * installed Google Play services and returned to the app. 
    */ 
    @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); 
     } 

    } 
} 

E qui è il layout di frammento: -

<FrameLayout 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" 
    tools:context="com.infogird.www.location_button_reposition.MapFragment"> 

    <fragment xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:map="http://schemas.android.com/apk/res-auto" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:id="@+id/map" 
     android:name="com.google.android.gms.maps.SupportMapFragment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     /> 
</FrameLayout> 

Spero che questo risolva il tuo problema. Grazie.

+0

Funziona con l'apk firmato? Funziona per me in modalità di debug ma non in modalità di rilascio. – seema

+0

qual è il problema esatto che stai affrontando nella modalità di rilascio? Penso che, nella mappa API V2, l'unica cosa che cambia tra una versione di rilascio e una versione di debug è la chiave che si registra qui code.google.com/apis/console Se il debug funziona e la versione finale non lo è, è la solo cambiare necessario Pertanto ti suggerisco di ricontrollare il codice hash del tuo keystore di rilascio e assicurarti che sia correttamente inserito nella Console dell'API di Google. @seema –

+0

è fatto. Il problema era che avevamo usato il valore intero 1. Sostituito con Integer.parseInt ("1") e funzionava. – seema

0

So che è una risposta in ritardo, ma questo codice funziona per me ..

 ImageView btnMyLocation = (ImageView) ((View) mapFragment.getView().findViewById(1).getParent()).findViewById(2); 
     btnMyLocation.setImageResource(R.mipmap.ic_location_circle); 

     RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) 
       btnMyLocation.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); 

Felice di codifica ..!