Aller au contenu


Photo

Mapkit Annotation

Firebase array retrieving

  • Please log in to reply
16 réponses à ce sujet

#1 rollano

rollano

    Ecabosseur en fèves

  • Membre
  • PipPipPipPip
  • 221 messages

Posté 28 octobre 2016 - 19:26

Bonjour tout le monde,

 

J'ai une petite question en rapport avec FireBase/Swift/Mapkit

 

J'ai une database constituée de la sorte (voir image)

 

ref : nom

key : autochild

child : xxx

 

 

Pour chaque nouvelle, je récupère la latitude et la longitude (image : LocationLat et LocationLong)

 

de manière isoler, pas de souci, j'arrive à récupérer les informations et à les attribuer à la mapkit via LocationManager/annotation/setRegion...

 

seulement, je souhaite maintenant mettre l'ensemble des annotations sur une seule carte.

 

Vous l'auriez compris, ce que je voudrais, c'est pouvoir, dans une Array (est-ce la meilleure solution ??), récupérer tous les LocationLat et tous les LocationLong pour ensuite les traduire et les placer sur la carte par le procédé que lorsqu'il ne s'agit que d'une seule annotation.

 

J'espère avoir été clair dans mes explications.

 

Merci à tous pour votre aide et excellent weekend ::)

 

 

Fichier(s) joint(s)

  • Fichier joint  FIR.JPG   23,17 Ko   2 téléchargement(s)


#2 Céroce

Céroce

    Mouleur de chocolats

  • Contrôleur d'arômes
  • 5 206 messages
  • LocationSaint-Leu-d'Esserent / France

Posté 29 octobre 2016 - 08:22

Euh non, je n'ai pas compris. Serais-tu en train de parler de "clustering" des annotations ?
(Voir par ex. ceci: https://github.com/yinkou/OCMapView)
RenaudPradenc.com Je suis développeur iOS & Mac indépendant.

#3 rollano

rollano

    Ecabosseur en fèves

  • Membre
  • PipPipPipPip
  • 221 messages

Posté 29 octobre 2016 - 15:27

Salut Céroce

En faite, à chaque fois qu'une nouvelle ligne est ajoutée a mon database, les childs comprennent deux élément (Longitude et Latitude)

 

c'est précisément ces deux élément que je veux récupérer pour placer sur une carte. j'arrive individuellement mais ensemble non.



#4 rollano

rollano

    Ecabosseur en fèves

  • Membre
  • PipPipPipPip
  • 221 messages

Posté 29 octobre 2016 - 15:27

ton lien est introuvable



#5 Joanna Carter

Joanna Carter

    Broyeur de fèves

  • Contrôleur d'arômes
  • 1 887 messages
  • LocationPlestin-les-Grèves (22)

Posté 29 octobre 2016 - 15:31

ton lien est introuvable


Je l'ai corrigé. Réessayer le.

#6 Joanna Carter

Joanna Carter

    Broyeur de fèves

  • Contrôleur d'arômes
  • 1 887 messages
  • LocationPlestin-les-Grèves (22)

Posté 29 octobre 2016 - 15:34

Salut Céroce
En faite, à jaque fois qu'une nouvelle ligne est ajoutée a mon database, les childs comprennent deux élément (Longitude et Latitude)

Je ne comrends pas. Une ligne a quatres éléments - commencement lat/long et fin lat/long

#7 Céroce

Céroce

    Mouleur de chocolats

  • Contrôleur d'arômes
  • 5 206 messages
  • LocationSaint-Leu-d'Esserent / France

Posté 29 octobre 2016 - 16:24

Je crois avoir compris.

Je ne connais pas FireBase, donc je vais faire comme si ça te renvoyait une struct de type Homeless:
struct Homeless {
    let adresse: String
    let codePostal: String
    // etc.
    
    let latitude: Double
    let longitude: Double
}
Pour ajouter une annotation à un carte, il faut seulement qu'un objet se conforme au protocole MKAnnotation.
J'aurais bien fait une extension à Homeless, mais malheureusement, MKAnnotation hérite du protocole NSObject.
Du coup, je crée une classe pour ça:

class HomelessAnnotation: NSObject, MKAnnotation {
    var coordinate: CLLocationCoordinate2D
    
    init(homeless: Homeless) {
        self.coordinate = CLLocationCoordinate2DMake(homeless.latitude, homeless.longitude)
        
        super.init()
    }
}
Je ne programme toujours pas Swift au quotidien, aussi les remarques des gens plus expérimentés seront les bienvenues.
RenaudPradenc.com Je suis développeur iOS & Mac indépendant.

#8 rollano

rollano

    Ecabosseur en fèves

  • Membre
  • PipPipPipPip
  • 221 messages

Posté 29 octobre 2016 - 16:33

Je l'ai corrigé. Réessayer le.

Fichier(s) joint(s)



#9 rollano

rollano

    Ecabosseur en fèves

  • Membre
  • PipPipPipPip
  • 221 messages

Posté 29 octobre 2016 - 16:37

Je crois avoir compris.

Je ne connais pas FireBase, donc je vais faire comme si ça te renvoyait une struct de type Homeless:

struct Homeless {
    let adresse: String
    let codePostal: String
    // etc.
    
    let latitude: Double
    let longitude: Double
}
Pour ajouter une annotation à un carte, il faut seulement qu'un objet se conforme au protocole MKAnnotation.
J'aurais bien fait une extension à Homeless, mais malheureusement, MKAnnotation hérite du protocole NSObject.
Du coup, je crée une classe pour ça:

class HomelessAnnotation: NSObject, MKAnnotation {
    var coordinate: CLLocationCoordinate2D
    
    init(homeless: Homeless) {
        self.coordinate = CLLocationCoordinate2DMake(homeless.latitude, homeless.longitude)
        
        super.init()
    }
}
Je ne programme toujours pas Swift au quotidien, aussi les remarques des gens plus expérimentés seront les bienvenues.

 

 

 

effectivement mes éléments sont sous cette forme. 

 

cela renvois tous les points ?  car je ne sais pas s'il considère la notion de autochild (key)



#10 rollano

rollano

    Ecabosseur en fèves

  • Membre
  • PipPipPipPip
  • 221 messages

Posté 29 octobre 2016 - 16:47

Je ne comrends pas. Une ligne a quatres éléments - commencement lat/long et fin lat/long

 

Y'a bien plus que 4. y'a une 20ten. Mais la c'est juste les deux qui m'intéresse

 

voulez vous voir le code complet ? ou l'image du résultat ?



#11 Joanna Carter

Joanna Carter

    Broyeur de fèves

  • Contrôleur d'arômes
  • 1 887 messages
  • LocationPlestin-les-Grèves (22)

Posté 29 octobre 2016 - 19:29


Je l'ai recorrigé. Réessayer le. En même temps, tu aurais pu le corriger toi-même, ce n'était qu'une parenthèse superflue à la fin.
  • Alf1996 aime ceci

#12 rollano

rollano

    Ecabosseur en fèves

  • Membre
  • PipPipPipPip
  • 221 messages

Posté 29 octobre 2016 - 23:39

Je l'ai recorrigé. Réessayer le. En même temps, tu aurais pu le corriger toi-même, ce n'était qu'une parenthèse superflue à la fin.

désoler j'ai pas regarder l'adresse.



#13 rollano

rollano

    Ecabosseur en fèves

  • Membre
  • PipPipPipPip
  • 221 messages

Posté 02 novembre 2016 - 22:20

Bonjour,

Bon j'ai réussi à récupérer les données en Array... Comment faire pour les définir sur mes annotations ?

 

ArrayLat [48.829772863582548, 48.829727559395913, 48.829388213442932, 48.932644883216291, 48.932663019007052, 48.829236766681923, 48.827753411651429]

ArrayLong [2.3948154319100028, 2.3948130849771152, 2.3943063033215841, 2.28122647851918, 2.2805309939058769, 2.3943699489902701, 2.3927869275234568]



#14 Joanna Carter

Joanna Carter

    Broyeur de fèves

  • Contrôleur d'arômes
  • 1 887 messages
  • LocationPlestin-les-Grèves (22)

Posté 03 novembre 2016 - 00:08

{
  for i in 0..<7
  {
    let lat = ArrayLat[i]
    
    let long = ArrayLong[i]
    
    let coord = CLLocationCoordinate2D(latitude: lat, longitude: long)
    
    ...
  }
}


#15 rollano

rollano

    Ecabosseur en fèves

  • Membre
  • PipPipPipPip
  • 221 messages

Posté 03 novembre 2016 - 02:18

tu es..... MAGNIFIQUE

 

merci beaucoup pour ton aide

 

voila le code final, en espérant que cela aidera d'autre

for i in 0 ..< homelessAllLat.count {
                let homelessArrayLat = homelessAllLat[i]
                
                let homelessArrayLong = homelessAllLong[i]
                
                //let coord = CLLocationCoordinate2D(latitude: lat, longitude: long)
                
                let homelessMissionNonValideeCoordinate = CLLocationCoordinate2D(latitude: homelessArrayLat, longitude: homelessArrayLong)

                let annotationAutre = MKPointAnnotation()
         
                annotationAutre.coordinate = homelessMissionNonValideeCoordinate
         
                annotationAutre.title = "Title RO"
         
                annotationAutre.subtitle = "Subtitle RO"
         
                //annotationAutre
         
                self.homelessAnnotation.append(annotationAutre)
         
                accueilMapKit.addAnnotations(homelessAnnotation)
         
            }


#16 LeChatNoir

LeChatNoir

    Brasseur de pâte à cacao

  • Artisan chocolatier
  • PipPipPipPipPipPipPip
  • 3 131 messages
  • LocationLyon

Posté 03 novembre 2016 - 10:25

Tu devrais sortir cette instruction du for :

accueilMapKit.addAnnotations(homelessAnnotation)

 

Avec 2 annotations, ça se voit pas mais si tu en a plus....


Le Chat Noir, développeur à ses heures...
Application passion => ClimbingAway


#17 rollano

rollano

    Ecabosseur en fèves

  • Membre
  • PipPipPipPip
  • 221 messages

Posté 03 novembre 2016 - 13:11

Tu devrais sortir cette instruction du for :

accueilMapKit.addAnnotations(homelessAnnotation)

 

Avec 2 annotations, ça se voit pas mais si tu en a plus....

 

 

En effet, je vais en avoir plusieurs.

 

Du coup je le sors du for.

 

Merci pour ta remarque







Also tagged with one or more of these keywords: Firebase, array, retrieving

0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)