Announcement

Collapse
No announcement yet.

Linien - Geo

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Linien - Geo

    Hallo zusammen,
    ich zeichne auf meine Map(OSM) mit den 5 Koordinaten 3 Linien.

    Wenn ich sie auskommentiere und per Taps die einzelnen Koordinaten einfügen will
    passiert gar nichts, gleich ob ich die Anweisung in der Zählschleife oder außerhalb der Zählschleife
    setze.

    Kann mir jemand sagen , wie die Anweisung( listpts.add...) gesetzt werden muss.
    Ich möchte die einzelnen Punkte per Taps erzeugen.

    Hier mein Code:
    Code:
    map.getOverlays().add(new MapEventsOverlay(new MapEventsReceiver() {
    int i = 0;
    public boolean singleTapConfirmedHelper(GeoPoint p) {//p = double-Wert
    polyline = new Polyline();
    List<GeoPoint> listpts = new ArrayList<>();
    for ( ; i < listpts.size(); i++){
    } i++;
    
    // listpts.add(new GeoPoint(p.getLatitude(), p.getLongitude()));
    
    
    listpts.add(new GeoPoint(48.139212, 11.565524));
    listpts.add(new GeoPoint(48.142534, 11.577519));
    listpts.add(new GeoPoint(48.137178, 11.589707));
    listpts.add(new GeoPoint(48.135259, 11.576210));
    listpts.add(new GeoPoint(48.133197, 11.566426));
    
    polyline.setPoints(listpts);
    polyline.setGeodesic(true);
    polyline.setColor(Color.RED);//or:
    polyline.setColor(ContextCompat.getColor(ctx, R.color.colorPrimaryDark));
    map.getOverlayManager().add(polyline);
    //Refresh map
    map.invalidate();
    
    //listpts.add(new GeoPoint(p.getLatitude(), p.getLongitude()));
    Toast.makeText(getBaseContext(), p.getLatitude() + " - " + p.getLongitude(), Toast.LENGTH_LONG).show();
    Toast.makeText(getBaseContext(), String.valueOf(i), Toast.LENGTH_LONG).show();
    
    return true;
    }

    Danke !
    MfG
    Luko

  • #2
    Die Liste wird angelegt -> Größe 0
    Wie weit kann/soll die Schleife laufen?
    listpts.add(new GeoPoint(48.139212, 11.565524));
    Dann werden Einträge hinzugefügt??

    List<GeoPoint> listpts = new ArrayList<>();
    listpts.add(new GeoPoint(48.139212, 11.565524));
    listpts.add(new GeoPoint(48.142534, 11.577519));
    listpts.add(new GeoPoint(48.137178, 11.589707));
    listpts.add(new GeoPoint(48.135259, 11.576210));
    listpts.add(new GeoPoint(48.133197, 11.566426));

    for ( int i=0; i < listpts.size(); i++){
    Macht mehr Sinn

    Christian

    Comment


    • #3
      Hallo
      danke für die Antwort. Aber da komme ich nicht zurecht.
      Die Schleife soll so lange laufen, wie Taps eingegebn werden, zwar nicht sinnvoll, aber zu Testzwecken.
      Mein Ziel ist mit zwei Taps die Linie festzulegen und mit jedem weiteren Tap eine weitere Linie anfügen, wie die mehreren Koordinaten zeigen. Ich will also keine feststehende Koordinate angeben.
      Mit diesem Code wird gerade mal eine Linie gezeichnet, weiter Taps bleiben ohne Wirkung:

      Code:
           map.getOverlays().add(new MapEventsOverlay(new MapEventsReceiver() {
           int i = 0;             
           public boolean singleTapConfirmedHelper(GeoPoint p) {
           //p = double-Wert                 
           polyline = new Polyline();                 
           List<GeoPoint> listpts = new ArrayList<>();                   
           //  listpts.add(new GeoPoint(p.getLatitude(), p.getLongitude()));                 
           listpts.add(new GeoPoint(48.139212, 11.565524));                 
           listpts.add(new GeoPoint(p.getLatitude(), p.getLongitude()));                      
           for ( ; i < listpts.size(); i++){                           
           polyline.setPoints(listpts);                          
           polyline.setGeodesic(true);                          
           polyline.setColor(Color.RED);//or:                          
           polyline.setColor(ContextCompat.getColor(ctx, R.color.colorPrimaryDark));                          
           map.getOverlayManager().add(polyline);                  
           }  
           i++;                  
           // listpts.add(new GeoPoint(p.getLatitude(), p.getLongitude()));                  
           //Refresh map                 
           map.invalidate();
      Weißt Du eine Lösung ?
      MfG
      Luko
      Zuletzt editiert von Christian Marquardt; 19.09.2020, 21:45.

      Comment


      • #4
        Jedenfalls ist der gezeigt Code definitv falsch
        Eine Eingabe kann ich in der Schleife auch nicht erkennen. Die Schleife ist leer, danach wird i++ gemacht?
        Da ich auch nicht verstehe was du machen willst (was sind Taps?), kann ich auch keine Lösung anbieten


        Christian

        Comment


        • #5
          Entschuldigt bitte für das visuell schlechte Posting.
          ich hab's nochmals probiert, aber die Darstellung funktioniert im Vergleich zum Erstposting nicht.
          Kann ich trotzdem auf Antwort hoffen.
          MfG
          Luko

          Comment


          • #6
            Es macht doch nur folgendes Vorgehen Sinn:
            - Liste anlegen
            - Liste füllen
            - Liste durchlaufen und mit dem Einträgen etwas tun

            Warum wird die Schleife nicht mit for(int i=0 inittialisiert?
            Warum am Ende ohne Sinn i++?

            Christian

            Comment


            • #7
              Hallo,
              zur Erläuterung ich habe eine Open-StreetMap auf mein Handy-Gerät geladen.
              Es geht um die Methode des Zeichnens der Linie.
              So, und jetzt will ich per Finger-Tap auf das Handy tippen und dabei soll durch Eingabe der Koordinaten:
              Code:
              listpts.add(new GeoPoint(p.getLatitude(), p.getLongitude()));
              eine Linie je nach Koordinatenpunkt gezeichnet werden, wie ich sie beispielhaft durch die feststehenden gezeigt habe. Der
              Code:
              Toast.makeText(getBaseContext(), p.getLatitude() + " - " + p.getLongitude(), Toast.LENGTH_LONG).show();
              gibt auch die Koordinaten wider, nur gezeichnet wird nicht wie bei den Beispiel-Koordinaten. Kannst Du jetzt einen Lösungs-Tip anbieten. Danke MfG Luko

              Comment


              • #8
                Kenne die Klasse Polyline nicht, aber Ursache könnte sein, das du eine Schleife hast die bei jedem Durchgang
                for ( ; i < listpts.size(); i++){
                polyline.setPoints(listpts);

                die Methode setPoints aufruft und EINEN Punkt setzt.
                Sofern es sich um diese Klasse handelt
                [URL="https://developers.google.com/android/reference/com/google/android/gms/maps/model/Polyline[/URL]

                zeigt die Beschreibung,

                public void setPoints (List<LatLng> points)

                das nicht ein Punkt gesetzt wird, sondern eine Liste von Punkten

                Des Weiteren wird eine List vom Typ LatLng benötigt. Dann wäre
                List<GeoPoint> listpts
                falsch (Ausgenommen GeoPoint ist ist von LatLng abgeleitet)

                Wenn du eine Liste vom o.a. Typ erstellt hast, ist keine Schleife erforderlich, sondern nur ein
                polyline.setPoints(listpts)
                in dem ALLE Punkt enthalten sind
                Zuletzt editiert von Christian Marquardt; 20.09.2020, 09:11.
                Christian

                Comment

                Working...
                X