como mostrar a localização atual como seta no Google Maps Android API V2?

9

Estou usando a Google Maps Android API V2. Quando uso o googlemap setMyLocationEnabled (true), o local atual aparece como um ponto azul. Como posso mostrar a localização atual como uma seta intermitente que pode indicar o rumo atual?

    
por user1942402 02.01.2013 в 10:32
fonte

4 respostas

5

Mova-se!

  

O local será indicado no mapa por um pequeno ponto azul se o dispositivo estiver parado ou como uma divisa se o dispositivo estiver em movimento.

Na documentação do Google Maps v2

    
por FunkTheMonk 27.09.2013 / 09:43
fonte
0

Use abaixo ele trabalha para obter a localização atual

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);     
    Criteria criteria = new Criteria();
   String provider = locationManager.getBestProvider(criteria, false);
Location location = locationManager.getLastKnownLocation(provider);

 if (location != null) {
                    System.out.println("Provider " + provider + " has been selected.");
                    onLocationChanged(location);
                  } 

Geocoder geocoder = new Geocoder(ViewTestDrive.this, Locale.getDefault());
                List<Address> addresses = null;

                try {
                    addresses = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1);
                } catch (IOException e) {
                    e.printStackTrace();
                    // Update address field with the exception.
                    //Message.obtain(mHandler, UPDATE_ADDRESS, e.toString()).sendToTarget();
                }
                String addressText = null;
                if (addresses != null && addresses.size() > 0) {
                    Address address = addresses.get(0);
                    // Format the first line of address (if available), city, and country name.
                     addressText = String.format("%s, %s, %s",
                            address.getMaxAddressLineIndex() > 0 ? address.getAddressLine(0) : "",
                            address.getLocality(),
                            address.getCountryName());
                    // Update address field on UI.
                    //Message.obtain(mHandler, UPDATE_ADDRESS, addressText).sendToTarget();
                }


                Intent intent = new Intent(android.content.Intent.ACTION_VIEW, 
                        Uri.parse("http://maps.google.com/maps?saddr="+addressText+"&daddr="+));
                intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");        
                startActivity(intent);


@Override
public void onLocationChanged(Location location) {
    int lat = (int) (location.getLatitude());
    int lng = (int) (location.getLongitude());
    String.valueOf(lat);
    String.valueOf(lng);

}


@Override
public void onProviderDisabled(String provider) {
    Toast.makeText(this, "Disabled provider " + provider,
            Toast.LENGTH_SHORT).show();

}


@Override
public void onProviderEnabled(String provider) {
    Toast.makeText(this, "Enabled new provider " + provider,
            Toast.LENGTH_SHORT).show();

}


@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
    // TODO Auto-generated method stub

}
    
por Sachin Gurnani 02.01.2013 / 10:39
fonte
0

(Desculpe, estou atrasado para responder. Espero que você tenha resolvido o problema até o momento.)

Você pode personalizar a maneira como os marcadores devem aparecer em algumas etapas simples. A seguir estão as partes do código necessárias para conseguir isso.

//You need a GoogleMap object to deal with the map functionality.
private GoogleMap map;
...
//Find Your Map view from layout
map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
//This method will do the rest needed
showMarker(userLatitude, userLongitude)
...
...
// Pass the desired latitude and longitude to this method
public void showMarker(Double lat, Double lon) {
    map.clear();
    // Create a LatLng object with the given Latitude and Longitude
    LatLng markerLoc = new LatLng(lat, lon);

    //Add marker to map
    map.addMarker(new MarkerOptions()
            .position(markerLoc)                                                                        // at the location you needed
            .title("Desired Title")                                                                     // with a title you needed
            .snippet("Any summary if needed")                                                           // and also give some summary of available
            .icon(BitmapDescriptorFactory.fromResource(R.drawable.your_flashing_arrow_anim_drawable))); // and give your animation drawable as icon
}

// To work these functionalities, you may require the following imports
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

E, finalmente, o layout deve conter uma entrada como esta, como MAP

<fragment
    android:id="@+id/map"
    android:name="com.google.android.gms.maps.SupportMapFragment"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1" />

Espero que isso resolva alguns outros problemas também ...:)

    
por Midhu 27.09.2013 / 09:06
fonte
0

Não é possível obter a seta azul como vemos no aplicativo do Google Maps do Google por padrão ou por meio da API no Android, de acordo com este post . Eu concluo que, podemos estar por conta própria para esse recurso em particular. Apenas meus 2 centavos.

    
por Mr. Concolato 02.05.2014 / 04:47
fonte