как показать текущее местоположение в виде стрелки в Google Maps Android API V2?

Я использую Google Maps Android API V2. Когда я использую Googlemap setMyLocationEnabled(true), текущее местоположение отображается в виде синей точки. Как я могу показать текущее местоположение в виде мигающей стрелки, которая может указывать текущий заголовок?


person user1942402    schedule 02.01.2013    source источник


Ответы (4)


Переехать!

Местоположение будет указано на карте маленькой синей точкой, если устройство неподвижно, или шевроном, если устройство движется.

Из документации Google Maps v2.

person FunkTheMonk    schedule 27.09.2013
comment
Короткий и милый ответ..!! - person Vishavjeet Singh; 08.02.2019

Получение синей стрелки, похожей на то, что мы видим в приложении Google Maps по умолчанию или через API на Android, невозможно в соответствии с этот пост. Я пришел к выводу, что мы можем быть сами по себе для этой конкретной функции. Просто мои 2 цента.

person Mr. Concolato    schedule 02.05.2014

Используйте ниже, чтобы получить текущее местоположение

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

}
person Sachin Gurnani    schedule 02.01.2013
comment
Это отвечает только на половину вопроса о плакатах. Меня больше интересует, как нарисовать стрелку поверх карты, анимировать ее (то есть не маркер) и синхронизировать ее с местоположением пользователя, даже когда карта прокручивается. - person gsysko; 04.01.2013
comment
Я не думаю, что это вообще отвечает на вопрос. Вопрос сосредоточен на достижении синей стрелки, такой же, как в самом официальном приложении Google Maps. - person ericn; 01.07.2013

(Извините, я слишком поздно отвечаю. Надеюсь, вы устранили проблему к этому времени.)

Вы можете настроить способ отображения маркеров, выполнив несколько простых шагов. Ниже приведены части кода, необходимые для этого.

//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;

И, наконец, макет должен содержать такую ​​запись, как 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" />

Надеюсь, это решит и некоторые другие проблемы... :)

person Midhu    schedule 27.09.2013