MapKit Pins aus SQL/XML

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • MapKit Pins aus SQL/XML

    Guten Tag,

    ich suche eine Möglichkeit effizient viele Pins in eine Map zu laden.
    Die Koordinaten sollten um die Aktualität zu wahren aus einer (später online) sql oder zur Not xml geladen werden. - Vorerst reicht lokal.
    Damit die Karte nicht überladen wird sollten die Pins nur in einem bestimmten Umkreis geladen werden, sprich eine gefilterte Anfrage.
    Letzteres ist erstmal irrelevant.

    Ich kann mittlerweile mit Mühe und Not SQL-Datensätze speichern und mittels SELECT suchen.
    die Verbindung zu Maps habe ich nicht geschafft.
    Zwar kann ich pins auf eine Map hinzufügen, jedoch nur statisch, also n Pins mit Koordinaten .. .

    Mir fehlt sozusagen die Brücke zwischen SQL und Maps...
    Würde mich über Tipps, Anleitungen, Tutorials, usw freuen.
    :)
  • Frankfurt schrieb:

    Zwar kann ich pins auf eine Map hinzufügen, jedoch nur statisch, also n Pins mit Koordinaten ...

    Gut, damit hast du dann alles Wichtige erreicht. Dynamischer wird es nicht.

    Du könntest versuchen beim Scrollen oder Zoomen des MapViews die ganzen gesetzten Pins zu entfernen, entsprechend des dargestellten Bereichs neu zu laden und diese Pins dem MapView zur Verfügung zu stellen.
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Danke für die Antwort, jedoch geht es mir halt darum, die koordinaten extern zu importieren. - Damit die Datensätze auch aktuell gehalten werden können
    Ganz Grob erstmal auch aus einer txt,xml.. später db.
    Das muss doch möglich sein :) Bei 1000+ Lins wird's doch irgendwann instabil ...
  • Klar ist das möglich.

    Du schriebst, du könntest ein "select *" auf die SQLite machen. Du schriebst, du könntest Pins einsetzen.
    Wenn du aus SQLite also nur die Koordinaten importierst, die du brauchst und dann wie beschrieben vorgehst dürften keine Probleme auftreten.

    Und bei 1000+ Pins auf der Map sieht dein User eh nicht mehr durch, da musst du dir um die Stabilität (die übrigens erstaunlich gut ist) weniger Sorgen machen.
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Du hast recht...
    War gestern Abend wohl auch etwas spät..
    Ich versuche jetzt mal die dummen Fehler zu finden..
    Das mit der Stabilität beruhigt mich schonmal. :)
    Mache mich dann mal auf den Weg... klingt auf einmal doch einfacher als geahnt.. Wenn ich am späten Abend wieder einen Hänger haben sollte melde ich mich .
  • So... geht langsam voran ..

    ich hänge nun hier :


    [NSString stringWithFormat: @"SELECT LAENGENGRAD, BREITENGRAD FROM PINS WHERE titel=\"%d\"", i];


    Das funktioniert auch für den gezielten Zugriff.


    Ich möchte nun alle Koordinaten auslesen um sie später auf die Map zu werfen..


    Ist es ratsam alle in einem Array zwischen zu speichern ? Oder stößt man da an Grenzen jenseits der 1000 Datensätze ?






    [...]

    const char *query_stmt = [querySQL UTF8String];



    if (sqlite3_prepare_v2(PinsDB, query_stmt, -1, &statement, NULL) == SQLITE_OK)

    {

    if (sqlite3_step(statement) == SQLITE_ROW)

    {

    NSString *laengengrad1 = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 0)];





    laengengradArray = laengengrad1;
    [...]
  • Generell ist es sinnvoller, die Auswahl direkt während des SQL Statements durchzuführen.

    Also quasi

    SQL-Abfrage

    1. SELECT laengengrad, breitengrad FROM pins WHERE (laengengrad < 60 AND laengengrad > 55) AND (breitengrad < 15 AND breitengrad > 10);


    Es hilft dir nicht sonderlich, wenn du mal eben alle 1.000.000.000 Datensätze in ein Array schaufelst und dieses dann im Anschluss entmüllst.
    Lieber nur die benötigten 30 Pins laden. ^^

    Hast du ggf. mal daran gedacht, das Ganze via Core Data zu erledigen?
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Danke für den Tipp :) !! hab ich gar nicht drann gedacht...

    Mittlerweile werden die Pins (alle) aus einer vor erst lokalen *.db geladen.
    Core Data hab ich schonmal grob gehört, werde ich mir anschauen.
    Später sollten die Pins natürlich aus einer Onlinedatenbank kommen.
    Diesbezüglich werde ich mir mal das Core Data anlesen... danke :) ich hoffe ich schaffe es zeitig...