1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  1. dave635061, 29.06.2012 #1
    dave635061

    dave635061 Threadstarter Neuer Benutzer

    Moin moin... ich bin absoluter Anfänger in Android_programmierung.

    Ich bekommen hin einen View mit verschiedenen Elementen mit Eventlistenern usw. Also die Standardsachen sitzen (schon wegen JAvaGrundKentnissen)

    Nun mein Problem. Ich möchte gern eine Karte anzeigen. Keine von Google sondern OSM über MapsForge und OSMARENDER. Gesagt getan (auf den wichtigen Teil begrenzt):

    Aufrufende Klasse:

    .
    .
    .
    Button b = (Button) findViewById(R.id.button1);
    b.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
    startActivity(new Intent(this,showMap.class));
    }


    Ausführende Klasse:

    package de.originalXXXXXXX.com.yummy

    import org.mapsforge.android.maps.MapActivity;
    import org.mapsforge.android.maps.MapView;
    import org.mapsforge.android.maps.MapViewMode;
    import android.os.Bundle;

    public class showMap extends MapActivity {
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    MapView mapView = new MapView(this,
    MapViewMode.OSMARENDER_TILE_DOWNLOAD);
    mapView.setClickable(true);
    mapView.setBuiltInZoomControls(true);
    setContentView(mapView);
    }
    }

    So ich habe dazu noch in der Manifest folgendes festgelegt:
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.INTERNET"/>

    trotzdem erschein ein Fehler un ddie App stürzt ab. So als ob keine Verbindung zum Server besteht. Internet ist aber vorhanden.

    Fehlermeldung:
    06-29 15:21:00.470: E/AndroidRuntime(8958): android.content.ActivityNotFoundException: Unable to find explicit activity class {de.originalXXXXXXX.com.yummy/de.originalXXXXXXX.com.yummy.showMap}; have you declared this activity in your AndroidManifest.xml?

    Ich dachte ich muss die Activity bei mapsforge nicht mehr in der Manifest verankern?

    Wo ist mein Fehler? :(
     
  2. Unicate, 29.06.2012 #2
    Unicate

    Unicate Android-Experte

    Musst du die Activity von MapsForge nicht bei dir im Manifest mit angeben?

    Ich denke schon.

    Andersrum natürlich nicht.
     
  3. dave635061, 29.06.2012 #3
    dave635061

    dave635061 Threadstarter Neuer Benutzer

    OK, Danke... nun erscheint ein weißes Bild aber keine Map.. HAb ich richtig gelesen das der Dienst OSMARENDER abgeschaltet wurde? was gibts für Alternativen? Und wie greife ich auf diese zu?

    :(
     
  4. Unicate, 29.06.2012 #4
    Unicate

    Unicate Android-Experte

    So richtig kann ich Dir dazu gar nichts weiter sagen.

    Aber schau doch mal in die AndNav sourcen. AndNav verwendet auch OSM.
     
  5. dave635061, 29.06.2012 #5
    dave635061

    dave635061 Threadstarter Neuer Benutzer

    OK... dann doch mit Google MAps... wie komm ich an diesen bescheidenen API-Key ran?
     
  6. Unicate, 29.06.2012 #6
  7. dave635061, 29.06.2012 #7
    dave635061

    dave635061 Threadstarter Neuer Benutzer

    OK... gelöst.. benutze nun GoogleMaps... ;)

    Genau über diese URL gelöst... danke für die Antwort...
     
  8. dave635061, 01.07.2012 #8
    dave635061

    dave635061 Threadstarter Neuer Benutzer

    So, gutgut ... ich lass die Karte anzeigen... Zoome auf den aktuellen Standort und lass mir da einen Pfeil anzeigen...

    Aber eins bekomm ich absolut nicht hin. Wie kann ich den Pfeil bei Änderung der Location mitwandern lassen?

    Ich hab folgendes versucht:

    public class MapsActivity extends MapActivity implements LocationListener
    {
    MapController mc;
    GeoPoint p;
    MapView mapView;
    List<Location> weg;
    Location ort;
    double lat;
    double lon;
    MapOverlay myPoint;
    List<Overlay> listOfOverlays;
    private LocationManager locationManager;

    class MapOverlay extends com.google.android.maps.Overlay
    {
    @Override
    public boolean draw(Canvas canvas, MapView mapView,

    boolean shadow, long when)
    {
    super.draw(canvas, mapView, shadow);

    //---translate the GeoPoint to screen pixels---
    Point screenPts = new Point();
    mapView.getProjection().toPixels(p, screenPts);

    //---add the marker---
    Bitmap bmp = BitmapFactory.decodeResource(
    getResources(), R.drawable.arrow_down_big);
    canvas.drawBitmap(bmp, screenPts.x-16, screenPts.y-32, null);
    return true;
    }
    }


    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    mapView = (MapView) findViewById(R.id.mapView);
    LinearLayout zoomLayout = (LinearLayout)findViewById(R.id.zoom);
    View zoomView = mapView.getZoomControls();

    weg = getGeo.weg;

    ort = weg.get(0);

    lat = ort.getLatitude();
    lon = ort.getLongitude();

    zoomLayout.addView(zoomView,
    new LinearLayout.LayoutParams(
    LayoutParams.WRAP_CONTENT,
    LayoutParams.WRAP_CONTENT));
    mapView.displayZoomControls(true);
    mc = mapView.getController();
    p = new GeoPoint(
    (int) (lat * 1E6),
    (int) (lon * 1E6));
    mc.animateTo(p);
    mc.setZoom(17);

    //---Add a location marker---
    myPoint = new MapOverlay();
    listOfOverlays = mapView.getOverlays();
    listOfOverlays.clear();
    listOfOverlays.add(myPoint);


    locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);

    mapView.invalidate();
    }
    @Override

    public void onLocationChanged(Location location)
    {
    weg.clear();
    weg.add(location);
    ort = weg.get(0);
    lat= ort.getLatitude();
    lon = ort.getLongitude();
    p = new GeoPoint(
    (int) (lat * 1E6),
    (int) (lon * 1E6));
    mc.animateTo(p);
    mc.setZoom(17);
    listOfOverlays.remove(myPoint);
    listOfOverlays.add(myPoint);
    mapView.invalidate();
    }


    @Override
    protected boolean isRouteDisplayed()
    {
    return false;
    }
    @Override
    public void onProviderDisabled(String provider) {
    // TODO Auto-generated method stub

    }
    @Override
    public void onProviderEnabled(String provider) {
    // TODO Auto-generated method stub

    }
    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
    // TODO Auto-generated method stub

    }
    }

    getGEO ist dabei ein Service der mir die aktuellen Punkte einträgt. Ich wollte erst die getGeo ergebnisse mit dem aktuellen Array vergleichen. Weiß allerdings nicht welchen Eventlistener ich da verwenden soll. Alles in allem funktioniert das mit dem Wechsel des Punktes nur, wenn ich mein Gerät drehe und somit der View gewechselt wird. Deshalb denke ich , ich muss nur den View aktualisieren. Aber wie bekomm ich das hin? Ich hoffe das war verständlich genug...

    Irgendwo hängst. Danke schonmal

    Der ursprüngliche Beitrag von 11:01 Uhr wurde um 12:21 Uhr ergänzt:

    Ok, Position wird doch geupdatet, aber sehr träge. Habe bereits locationManager.requestLocationUpdates(LocationMan ager.NETWORK_PROVIDER, 0, 0, this); zu locationManager.requestLocationUpdates(LocationMan ager.NETWORK_PROVIDER, 1000, 1, this);

    angepasst. Leider immer noch langsam. Zusätzlich habe ich die GPS-NAvigation mit hinzugefügt:
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000,1, this);

    trotzdem noch sehr langsames Aktualisieren... :(
     
    Zuletzt bearbeitet: 01.07.2012
  9. dave635061, 01.07.2012 #9
    dave635061

    dave635061 Threadstarter Neuer Benutzer

    ok, noch ein update. Sobald GPS anliegt funktionierts wunderbar. Nur wenn über Netzbetreiber ein Abfrage geschieht dauert das so lang. Das scheint aber so normal zu sein. ;) Den Code habe ich übrigens noch einkürzen und optimieren können. ;)
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[Offen] Android Layout funktioniert nicht Android App Entwicklung 08.09.2017
[OFFEN] Activity als Dialog - RecyclerView funktioniert nicht mehr Android App Entwicklung 14.08.2017
[GESCHLOSSEN] Random ListItem ausgeben funktioniert nicht mehr Android App Entwicklung 13.08.2017
[OFFEN] SVN Commit in Android Studio funktioniert nicht mehr Android App Entwicklung 07.08.2017
[OFFEN] Bitmap.recycle funktioniert nach drawBitmap nicht Android App Entwicklung 18.07.2017
[OFFEN] Google-Spracherkennung funktioniert nicht im Tablayout Android App Entwicklung 20.04.2017
[ERLEDIGT] TextView text "Heute ist der dd.MM.yyyy" funktioniert überhaupt nicht Android App Entwicklung 08.03.2017
Excel Dokument mithilfe von JExcelAPI auslesen funktioniert nicht :/ Android App Entwicklung 02.03.2017
adb starten funktioniert nicht Android App Entwicklung 25.02.2017
AS-Emulator & Smartwatch-Source funktioniert nicht Android App Entwicklung 27.01.2017
Du betrachtest das Thema "MapsForge / OSMARENDER / MapActivity funktioniert nicht" im Forum "Android App Entwicklung",