Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


J2ME / Android / BlackBerry – Direcciones de conducción, ruta entre dos ubicaciones

En Android 1.0 había un espacio de nombres com.google.googlenav para direcciones de conducción:
Itinerario – Direcciones de Google mejoradas
Pero en el nuevo SDK se eliminó por alguna razón …
Android: DrivingDirections eliminado desde API 1.0 – cómo hacerlo en 1.5 / 1.6? En BlackBerry también hay falta de API para este tipo de cosas:
¿Cómo encontrar la ruta entre dos lugares en Blackberry?

Csie-tw da una solución (consulta gmaps para el archivo kml y analizarlo):
Android – Dirección de conducción (Ruta de ruta)
También Andrea hizo clases de ayuda DrivingDirections para Android.
Escribí un pequeño ayudante para esta funcionalidad, en j2me, así que me gustaría compartir mis muestras en Android y BlackBerry.

  • Validación de Android Email en EditText
  • No se puede encontrar org.gradle.api.artifacts.result.ResolvedModuleVersionResult cuando se aplica el complemento de Android en Gradle
  • Deshabilitar la administración de la caché de Volley
  • Resalte el elemento personalizado de lista cuando haga clic largo
  • No se puede insertar los contactos de android mediante programación en el dispositivo de Android
  • Hacer que el emulador de Android funcione más rápido
  • ACTUALIZAR
    Como se indicó en los comentarios, no se admite oficialmente las Condiciones del servicio de las API de Google Maps :

    Condiciones de servicio de las API de Google Maps / Google Earth
    Última actualización: 27 de mayo de 2009

    10. Restricciones de Licencia. A excepción de lo expresamente permitido bajo los Términos, oa menos que usted haya recibido una autorización previa por escrito de Google (o, según corresponda, del proveedor de Contenido en particular), las licencias de Google anteriores están sujetas a su adhesión a todas las restricciones a continuación. Excepto como se permite explícitamente en la Sección 7 o la Documentación de las API de Google Maps, no debe (ni puede permitir que otra persona lo haga):

    10.9 utilizar el Servicio o Contenido con cualquier producto, sistema o aplicación para o en relación con:
    (A) navegación en tiempo real o guía de ruta, incluyendo, pero sin limitarse a, guiado de ruta turn-by-turn que está sincronizado con la posición del dispositivo habilitado para sensores de un usuario;

    Y puede ser deshabilitado para ciertas aplicaciones (de alguna manera, al menos en Android) … De Geocode raspado en la conversación de .NET :

    Esto no está permitido por los términos de uso de la API. No debes raspar Google Maps para generar geocódigos. Bloquearemos los servicios que hacen consultas automatizadas de nuestros servidores.

    Bret Taylor
    Gerente de producto, Google Maps

    Estaría agradecido por cualquier alternativa y / o sugerencias!
    ¡Gracias!

  • Cómo implementar una devolución de llamada asíncrona utilizando la biblioteca de red de Retrofit de Square
  • ¿Cómo puedo obtener la distancia entre dos puntos por latlng?
  • ¿Cómo puedo obtener Fragment from View?
  • Cargas lentas en el emulador de Android
  • Reducción inicial de zoom de Webview de Android
  • Android: Emulador frecuentemente desconectado (sin conexión)!
  • One Solution collect form web for “J2ME / Android / BlackBerry – Direcciones de conducción, ruta entre dos ubicaciones”

    Proveedor de ruta del mapa J2ME

    Maps.google.com tiene un servicio de navegación que le puede proporcionar información de ruta en formato KML .

    Para obtener el archivo kml necesitamos formar url con ubicaciones de inicio y destino:

    public static String getUrl(double fromLat, double fromLon, double toLat, double toLon) {// connect to map web service StringBuffer urlString = new StringBuffer(); urlString.append("http://maps.google.com/maps?f=d&hl=en"); urlString.append("&saddr=");// from urlString.append(Double.toString(fromLat)); urlString.append(","); urlString.append(Double.toString(fromLon)); urlString.append("&daddr=");// to urlString.append(Double.toString(toLat)); urlString.append(","); urlString.append(Double.toString(toLon)); urlString.append("&ie=UTF8&0&om=0&output=kml"); return urlString.toString(); } 

    A continuación, tendrá que analizar xml (implementado con SAXParser) y rellenar estructuras de datos:

     public class Point { String mName; String mDescription; String mIconUrl; double mLatitude; double mLongitude; } public class Road { public String mName; public String mDescription; public int mColor; public int mWidth; public double[][] mRoute = new double[][] {}; public Point[] mPoints = new Point[] {}; } 

    La conexión de red se implementa de diferentes maneras en Android y Blackberry, por lo que tendrá que primero url de formulario:

      public static String getUrl(double fromLat, double fromLon, double toLat, double toLon) 

    A continuación, crear conexión con esta url y obtener InputStream.
    A continuación, pasar este InputStream y obtener la estructura de datos analizados:

      public static Road getRoute(InputStream is) 

    Código fuente completo RoadProvider.java

    Mora

    Dead link – Captura de pantalla de BlackBerry Storm

     class MapPathScreen extends MainScreen { MapControl map; Road mRoad = new Road(); public MapPathScreen() { double fromLat = 49.85, fromLon = 24.016667; double toLat = 50.45, toLon = 30.523333; String url = RoadProvider.getUrl(fromLat, fromLon, toLat, toLon); InputStream is = getConnection(url); mRoad = RoadProvider.getRoute(is); map = new MapControl(); add(new LabelField(mRoad.mName)); add(new LabelField(mRoad.mDescription)); add(map); } protected void onUiEngineAttached(boolean attached) { super.onUiEngineAttached(attached); if (attached) { map.drawPath(mRoad); } } private InputStream getConnection(String url) { HttpConnection urlConnection = null; InputStream is = null; try { urlConnection = (HttpConnection) Connector.open(url); urlConnection.setRequestMethod("GET"); is = urlConnection.openInputStream(); } catch (IOException e) { e.printStackTrace(); } return is; } } 

    Ver código completo en J2MEMapRouteBlackBerryEx en Google Code

    Androide

    Android G1 captura de pantalla

     public class MapRouteActivity extends MapActivity { LinearLayout linearLayout; MapView mapView; private Road mRoad; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mapView = (MapView) findViewById(R.id.mapview); mapView.setBuiltInZoomControls(true); new Thread() { @Override public void run() { double fromLat = 49.85, fromLon = 24.016667; double toLat = 50.45, toLon = 30.523333; String url = RoadProvider .getUrl(fromLat, fromLon, toLat, toLon); InputStream is = getConnection(url); mRoad = RoadProvider.getRoute(is); mHandler.sendEmptyMessage(0); } }.start(); } Handler mHandler = new Handler() { public void handleMessage(android.os.Message msg) { TextView textView = (TextView) findViewById(R.id.description); textView.setText(mRoad.mName + " " + mRoad.mDescription); MapOverlay mapOverlay = new MapOverlay(mRoad, mapView); List<Overlay> listOfOverlays = mapView.getOverlays(); listOfOverlays.clear(); listOfOverlays.add(mapOverlay); mapView.invalidate(); }; }; private InputStream getConnection(String url) { InputStream is = null; try { URLConnection conn = new URL(url).openConnection(); is = conn.getInputStream(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return is; } @Override protected boolean isRouteDisplayed() { return false; } } 

    Ver código completo en J2MEMapRouteAndroidEx en Google Code

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.