Comment dessiner l'itinéraire dans Google Maps API V2 depuis mon emplacement

Je veux faire une application de direction, mais j'ai du mal à tracer la route de mon emplacement vers la destination, j'ai une longitude et une latitude variables de mon emplacement, mais je ne sais pas dessiner la ligne … je veux dessiner l'orientation vers cet emplacement = -6.984873352070259 , 108.48140716552734. Aidez-moi les gars … J'ai lu les quêtes avant, mais je ne peux pas obtenir de solution .. merci … je suis désolé avant … voici mon code

package com.apps.visitkuningan; import android.app.Dialog; import android.location.Criteria; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.view.Menu; import android.widget.Toast; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.GooglePlayServicesUtil; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.SupportMapFragment; import com.google.android.gms.maps.model.LatLng; public class Arahkan extends FragmentActivity implements LocationListener { GoogleMap googleMap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Getting Google Play availability status int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getBaseContext()); // Showing status if(status!=ConnectionResult.SUCCESS){ // Google Play Services are not available int requestCode = 10; Dialog dialog = GooglePlayServicesUtil.getErrorDialog(status, this, requestCode); dialog.show(); }else { // Google Play Services are available // Getting reference to the SupportMapFragment of activity_main.xml SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); // Getting GoogleMap object from the fragment googleMap = fm.getMap(); // Enabling MyLocation Layer of Google Map googleMap.setMyLocationEnabled(true); // Getting LocationManager object from System Service LOCATION_SERVICE LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); // Creating a criteria object to retrieve provider Criteria criteria = new Criteria(); // Getting the name of the best provider String provider = locationManager.getBestProvider(criteria, true); // Getting Current Location Location location = locationManager.getLastKnownLocation(provider); if(location!=null){ onLocationChanged(location); } locationManager.requestLocationUpdates(provider, 20000, 0, this); } } @Override public void onLocationChanged(Location location) { // Getting latitude of the current location double latitude = location.getLatitude(); // Getting longitude of the current location double longitude = location.getLongitude(); // Creating a LatLng object for the current location LatLng latLng = new LatLng(latitude, longitude); // Showing the current location in Google Map googleMap.moveCamera(CameraUpdateFactory.newLatLng(latLng)); // Zoom in the Google Map googleMap.animateCamera(CameraUpdateFactory.zoomTo(15)); } @Override public void onProviderDisabled(String provider) { // TODO Auto-generated method stub Toast.makeText( getApplicationContext(), "Gps Disabled", Toast.LENGTH_SHORT ).show(); } @Override public void onProviderEnabled(String provider) { // TODO Auto-generated method stub Toast.makeText( getApplicationContext(), "Gps Enabled", Toast.LENGTH_SHORT).show(); } @Override public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); return true; } } 

Je suis novice dans la programmation Android, j'espère que vous pouvez m'aider … merci … 🙂

  • Comment puis-je dessiner une courbe transparente en utilisant des graphiques Android?
  • Temps de construction longs avec sbt android-plugin
  • Définir layout_anchor à l'exécution sur FloatingActionButton
  • Gelée expresso sur vue avec animation en boucle
  • Design de matériaux Android Coloris Divider
  • Comment fermer l'activité et revenir à l'activité précédente dans Android
  • Java.lang.IllegalArgumentException: pointerIndex hors de portée Exception - dispatchTouchEvent
  • Un objet téléphonique peut-il être instancié par le sdk?
  • Impossible de créer un package Android intégré via visual studio cordova
  • Android 5 (HTC) EACCES (Autorisation refusée)
  • Android Phonegap: notifiez javascript lorsqu'un AsyncTask est terminé
  • Comment utiliser le flux Master / Detail avec les onglets sur Android
  • 3 Solutions collect form web for “Comment dessiner l'itinéraire dans Google Maps API V2 depuis mon emplacement”

    En supposant que vous avez au moins 2 objets de localisation, vous pouvez dessiner une polyligne. Cette méthode dessine une ligne bleue semi-transparente sur la carte, compte tenu d'une liste d'emplacements. Ce code est tiré d'une application actuellement sur Android Store Play (Simply Walking).

     private void drawPrimaryLinePath( ArrayList<Location> listLocsToDraw ) { if ( map == null ) { return; } if ( listLocsToDraw.size() < 2 ) { return; } PolylineOptions options = new PolylineOptions(); options.color( Color.parseColor( "#CC0000FF" ) ); options.width( 5 ); options.visible( true ); for ( Location locRecorded : listLocsToDraw ) { options.add( new LatLng( locRecorded.getLatitude(), locRecorded.getLongitude() ) ); } map.addPolyline( options ); } 

    Tout d'abord, vous pouvez obtenir les directions entre deux coordonnées de localisation à l'aide de l'API Google Directions.

     public static ArrayList getDirections(double lat1, double lon1, double lat2, double lon2) { String url = "http://maps.googleapis.com/maps/api/directions/xml?origin=" +lat1 + "," + lon1 + "&destination=" + lat2 + "," + lon2 + "&sensor=false&units=metric"; String tag[] = { "lat", "lng" }; ArrayList list_of_geopoints = new ArrayList(); HttpResponse response = null; try { HttpClient httpClient = new DefaultHttpClient(); HttpContext localContext = new BasicHttpContext(); HttpPost httpPost = new HttpPost(url); response = httpClient.execute(httpPost, localContext); InputStream in = response.getEntity().getContent(); DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document doc = builder.parse(in); if (doc != null) { NodeList nl1, nl2; nl1 = doc.getElementsByTagName(tag[0]); nl2 = doc.getElementsByTagName(tag[1]); if (nl1.getLength() > 0) { list_of_geopoints = new ArrayList(); for (int i = 0; i < nl1.getLength(); i++) { Node node1 = nl1.item(i); Node node2 = nl2.item(i); double lat = Double.parseDouble(node1.getTextContent()); double lng = Double.parseDouble(node2.getTextContent()); list_of_geopoints.add(new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6))); } } else { // No points found } } } catch (Exception e) { e.printStackTrace(); } return list_of_geopoints; } 

    Une fois qu'une mise en page MapView est créée dans votre application Android, vous pouvez inclure cette classe Overlay personnalisée.

     public class MyOverlay extends Overlay { private ArrayList all_geo_points; public MyOverlay(ArrayList allGeoPoints) { super(); this.all_geo_points = allGeoPoints; } @Override public boolean draw(Canvas canvas, MapView mv, boolean shadow, long when) { super.draw(canvas, mv, shadow); drawPath(mv, canvas); return true; } public void drawPath(MapView mv, Canvas canvas) { int xPrev = -1, yPrev = -1, xNow = -1, yNow = -1; Paint paint = new Paint(); paint.setColor(Color.BLUE); paint.setStyle(Paint.Style.FILL_AND_STROKE); paint.setStrokeWidth(4); paint.setAlpha(100); if (all_geo_points != null) for (int i = 0; i < all_geo_points.size() - 4; i++) { GeoPoint gp = all_geo_points.get(i); Point point = new Point(); mv.getProjection().toPixels(gp, point); xNow = point.x; yNow = point.y; if (xPrev != -1) { canvas.drawLine(xPrev, yPrev, xNow, yNow, paint); } xPrev = xNow; yPrev = yNow; } } } 

    La fonction getDirections () peut être appelée avant d'ajouter cette superposition aux superpositions de MapView.

     MapView mv = (MapView) findViewById(R.id.mvGoogle); mv.setBuiltInZoomControls(true); MapController mc = mv.getController(); ArrayList all_geo_points = getDirections(17.3849, 78.4866, 28.63491, 77.22461); GeoPoint moveTo = all_geo_points.get(0); mc.animateTo(moveTo); mc.setZoom(12); mv.getOverlays().add(new MyOverlay(all_geo_points)); 

    Vous pouvez utiliser le type de fonctionnalité Drawing on Map:

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.