Google Maps Android API V2 を使用しています。Googlemap setMyLocationEnabled(true) を使用すると、現在の場所が青い点として表示されます。現在の位置を、現在の進行方向を示す点滅する矢印として表示するにはどうすればよいですか?
質問する
8598 次
4 に答える
6
于 2013-09-27T07:43:29.670 に答える
-1
以下を使用して、現在の場所を取得します
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
}
于 2013-01-02T09:39:50.757 に答える
-1
(申し訳ありませんが、答えるのが遅すぎます。この時間までに問題を解決していただければ幸いです。)
いくつかの簡単な手順で、マーカーの表示方法をカスタマイズできます。以下は、これを実現するために必要なコード部分です。
//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" />
これが他のいくつかの問題も解決することを願っています... :)
于 2013-09-27T07:06:47.077 に答える