2016-08-05 21 views
6

Mam do czynienia z problemem podczas wyświetlania mapy google w komórce widoku tabeli z szybkim. Chcę wyświetlić Check In (szerokość i długość geograficzną) na podstawie tego chcę wyświetlić mapę google w widoku tabeli. Będę szerokości i długości geograficznej z serwera, jeśli brak dostępnej lokalizacji oznacza, że ​​otrzymam zero. Tak więc, w jednym scenariuszu otrzymuję poprawność, ale podczas przeładowywania najwyższego poziomu uzyskuję mapę kiedy i gdzie ich szerokość i długość geograficzna jest również zerowa. Proszę, prowadź mnie.Google Map w tableView

+0

Brzmi to może chcesz leniwie instancji i włóż widok Google Map programowo. 'dequeueReusableCell' może dać ci komórki, które mają już utworzoną mapę. Nie wiem jednak, czy jest to bardzo jasne, o co prosisz, a także ostrzegłbym przed tworzeniem zbyt wielu takich drogich widoków. Być może istnieje rozwiązanie, które polega na generowaniu statycznych obrazów pokazujących lokalizację, którą użytkownicy mają widzieć. –

Odpowiedz

5

Widok mapy jest drogim widokiem do utworzenia wystąpienia. Nawet przy korzystaniu z dequeueReusableCellWithIdentifier nadal będzie obciążony zasobami z dużą liczbą elementów.

Uważam, że najlepszym sposobem jest użycie sposobu wygenerowania statycznego obrazu mapy z kombinacji długości/szerokości geograficznej.

Można spojrzeć here i można zobaczyć, jak łatwo skonstruować wywołania API do wielu popularnych dostawców map, takich jak Google na mapie statycznej obrazu jak na przykład:

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

Warto również wspomnieć niektórzy z tych dostawców mogą mieć ograniczenia (np. Google może potrzebować klucza API w przypadku dużego ruchu). Więc wybierz mądrze po pewnych badaniach.

+0

whats about apple map? –

+0

Prawdopodobnie możesz użyć 'MKMapSnapshotter'. Potrzebuje niektórych opcji, takich jak region do migawki i podobnych rzeczy, a to da ci UIImage dla wyjścia. Jest dostępny dla systemu iOS 7 i nowszych wersji, a także działa asynchronicznie. –

+0

dzięki za komentarz, ale już to zrobiłem. –

1

Wygląda stoją dwie kwestie

1) już wspomniano jeden „Mapa pojawia nawet gdy dane jest zerowa”

2) Kwestia wydajności (nie jest tu wspomnieć chociaż)

pierwszy z nich polega na usunięciu z komórki komórki. Po przeładowaniu tabeli komórka zostanie ponownie użyta (Nie utworzono ponownie).

Po powrocie na swoją komórkę w wierszu

tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) 

komórka z widoku mapy mogą uzyskać zwrot, dlatego tam dostać niechcianego mapę. Powinieneś zrobić to zero, aby temu zapobiec.

2:

Kiedy przyszedł do wykonania, jego Niewłaściwa podejścia do pokazania MapView w każdej komórce. Alternatywnym podejściem jest, aby obraz z mapy url

użyć tej

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

whats about apple map? –