Intereting Posts
InAppBrowser автоматически воспроизводит видео с vimeo в собственном видеоплеере? Android Studio создает вариант / тип сборки, исключая jniLibs? Facebook connect for android возвращает пустой экран входа? Что такое файл keystore для Android и для чего он используется? Получение «Разрешения отказа (13)» при попытке использовать systrace на Moto X с KitKat Установите программный коэффициент PercentageRelativeLayout Как сделать круг круга формы текста и установить другой цвет фона на основе условия Как установить атрибут android: layout_alignParentLeft для просмотра изображений в коде? Есть ли какая-либо платформа для Android, готовая к использованию Android – обновить данные в AlertDialog? Отправлять Push-уведомления в iOS / Android на закрытом Wi-Fi (без подключения к Интернету) JaCoCo возвращает 0% Покрытие с Kotlin и Android 3.0 Обрабатывать onActivityResult на службе Настраиваемые виджеты в Android Как установить размер холста?

Как рисовать маршрут в Google Maps API V2 из моего местоположения

Я хочу сделать приложение направления, но у меня есть проблема, чтобы нарисовать маршрут из моего местоположения в пункт назначения, я получаю значение переменной долготы и широты из своего местоположения, но я не знаю, чтобы рисовать линию. Я хочу направить направление в это место = -6.984873352070259 , +108,48140716552734. Пожалуйста, помогите мне, ребята .. я прочитал quetions раньше, но я не могу получить решение .. спасибо .. iam sorry before .. вот мой код

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

Iam новичок в программировании на Android, я надеюсь, что вы можете мне помочь .. спасибо .. 🙂

Solutions Collecting From Web of "Как рисовать маршрут в Google Maps API V2 из моего местоположения"

Предполагая, что у вас есть как минимум 2 объекта местоположения, вы можете нарисовать полилинию. Этот метод рисует полупрозрачную синюю линию на карте, учитывая список мест. Этот код взят из приложения, которое в настоящее время находится в магазине Android 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 ); } 

Во-первых, вы можете получить указания между двумя координатами местоположения, используя 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; } 

Как только макет MapView будет создан в вашем приложении для Android, вы можете включить этот настраиваемый класс Overlay.

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

Функция getDirections () может быть вызвана непосредственно перед добавлением этого Overlay в наложения 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)); 

Вы можете использовать функцию «Рисование на карте»: