Question

Sur Android 1.0 il y avait un espace de noms com.google.googlenav pour l'itinéraire:
Route - Amélioration Driving Directions Google
Mais dans les nouveaux SDK il a été supprimé par une raison ...
Android: DrivingDirections supprimés depuis API 1.0 - comment faire en 1.5 / 1.6 Sur BlackBerry il y a aussi le manque d'API pour une telle substance:
comment trouver la route entre deux endroits Blackberry?

CSIE-tw donne une solution de contournement (gmaps de requête pour le fichier kml et l'analyser):
Android - Direction Driving (Route Chemin)
Aussi Andrea a fait un DrivingDirections classes d'aide pour Android.
J'ai écrit une petite aide pour cette fonctionnalité, dans J2ME, donc je voudrais partager mes échantillons sur Android et BlackBerry.

UPDATE Comme il a été dit dans les commentaires, il est pas officiellement autorisé API Google Maps Conditions d'utilisation :

  

Google Maps / Google API Terre Conditions d'utilisation
  Dernière mise à jour: 27 mai 2009
  ...
  10. Restrictions de licence. Sauf autorisation expresse dans les conditions, ou à moins que vous avez reçu l'autorisation préalable écrite de Google (ou, le cas échéant, du fournisseur de contenu particulier), les licences de Google ci-dessus sont soumis à votre adhésion à toutes les restrictions ci-dessous. Sauf si explicitement autorisés dans la section 7 ou les API Documentation Plans, vous ne devez pas (ni autoriser quiconque à):
  ...
  10.9 utiliser le service ou le contenu avec des produits, systèmes ou applications pour ou en relation avec:
  (A) la navigation en temps réel ou guidage routier, y compris, mais sans s'y limiter, le guidage d'itinéraire virage par virage qui est synchronisé sur la position du dispositif activé par capteur d'un utilisateur;

et peut être désactivé pour certaines applications (en quelque sorte, au moins sur Android) ... géocodage grattage dans la conversation .NET :

  

Ce n'est pas autorisé par les termes de l'API d'utilisation. Vous ne devriez pas gratter   Google Maps pour générer géocodage. Nous allons bloquer les services qui font   requêtes automatisées de nos serveurs.

     

Bret Taylor
  Chef de produit, Google Maps

Serait reconnaissant pour toutes les solutions de rechange et / ou suggestions!
Merci!

Était-ce utile?

La solution

Carte J2ME Itinéraire fournisseur

maps.google.com a un service de navigation qui peut vous fournir des informations d'itinéraire dans RoadProvider.java

BlackBerry

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

Voir le code complet sur J2MEMapRouteBlackBerryEx sur Google code

Android

capture d'écran G1 applications

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

Voir le code complet sur J2MEMapRouteAndroidEx sur Google code

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top