2016-08-05 27 views
6

Ich habe ein Problem beim Anzeigen von Google Maps in einer Tabellenansicht Zelle mit Swift. Ich möchte das Einchecken (Breiten- und Längengrad) basierend darauf anzeigen. Ich möchte Google Maps in der Tabellenansicht anzeigen. Ich werde Breiten- und Längengrad vom Server, wenn kein Standort verfügbar ist, bedeutet, dass ich null erhalten werde. Also, in einem Szenario werde ich richtig, aber während ich die oberste Ebene neu einlade, bekomme ich eine Karte, wann und wo ihre Breite und Länge ebenfalls null ist. Bitte führen Sie mich.Google Map in TabelleView

+0

Es klingt zu machen, wie Sie wollen, faul könnte instanziiert und die Google Map-Ansicht programmatisch einzufügen. 'dequeueReusableCell' kann Ihnen Zellen geben, die die Map bereits instanziiert haben. Ich weiß jedoch nicht, ob es sehr klar ist, was Sie fragen, und ich warne auch davor, zu viele dieser teuren Ansichten zu instanziieren. Vielleicht gibt es eine Lösung, bei der statische Bilder erzeugt werden, die den Ort zeigen, den die Benutzer sehen sollen. –

Antwort

5

Eine Kartenansicht ist eine teure Ansicht instanziieren. Selbst wenn Sie dequeueReusableCellWithIdentifier verwenden, ist es immer noch ressourcenintensiv mit einer großen Anzahl von Elementen.

Ich glaube, dass es am besten ist, einen Weg zu verwenden, um ein statisches Kartenbild aus Ihrer Kombination aus Längen- und Breitengrad zu erstellen.

können Sie einen Blick here und Sie können sehen, wie man leicht einen API-Aufruf zu vielen beliebten Kartenanbietern wie Google für ein statisches Bild Karte konstruieren, wie zum Beispiel:

http://maps.googleapis.com/maps/api/staticmap?center=40.714728,-73.998672&zoom=13&scale=false&size=600x300&maptype=roadmap&format=png&visual_refresh=true

Ebenfalls erwähnenswert dass einige dieser Anbieter Einschränkungen haben (wie Google könnte bei hohem Datenverkehr einen API-Schlüssel benötigen). Also wähle weise nach etwas Recherche.

+0

was ist mit apple map? –

+0

Sie können wahrscheinlich 'MKMapSnapshotter' verwenden. Es braucht einige Optionen wie die Region zu Snapshot und so etwas und es wird Ihnen ein UIImage für eine Ausgabe geben. Es ist für iOS 7 und höher verfügbar und funktioniert auch asynchron. –

+0

danke für den Kommentar, aber ich hatte es schon getan. –

1

Sieht aus wie Sie sind zwei Fragen, mit denen

1) bereits erwähnt eine „Karte erscheint auch, wenn die Daten gleich Null ist“

2) Performance Ausgabe (Es ist nicht hier allerdings erwähnt)

Die der erste ist wegen der Entbindung der Zelle. Wenn Sie die Tabelle erneut laden, wird die Zelle wiederverwendet (nicht neu erstellt).

Wenn Sie Ihre Zelle für Zeile zurückgeben in

tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) 

die Zelle mit Kartenansicht dafür bekommen können, weshalb Sie unerwünschte Karte dorthin zu gelangen. Sie sollten es Null machen, um dies zu verhindern.

2:

Wenn kam, um die Leistung, es ist einem nicht der richtige Ansatz mapview in jeder Zelle zu zeigen. Ein alternativer Ansatz ist Bild aus Ihrer Karte URL

Verwendung dieses

let mapUrl: String = NSURL(string:"YourMapURL") 

let mapImage = UIImage.imageWithData(NSData.dataWithContentsOfURL(mapUrl)) 
0
let latitude:Double = 17.3850 
    let longitude:Double = 78.4867 

    let imageURL = NSURL(string: "http://maps.googleapis.com/maps/api/staticmap?center=\(latitude),\(longitude)&zoom=12&scale=false&size=600x300&maptype=roadmap&format=png&visual_refresh=true") 

    let imagedData = NSData(contentsOfURL: imageURL!)! 

    staticMapImgView.image = UIImage(data: imagedData) 
+0

was ist mit Apple Map? –