2016-08-05 1 views
6

У меня возникла проблема при отображении карт Google в ячейке таблицы со скоростью. Я хочу отобразить проверку (широта и долгота) на основе этого. Я хочу отобразить карту google в виде таблицы. Я буду определять широту и долготу с сервера, если нет доступных мест, я получу нуль. поэтому, в одном сценарии я получаю правильный, но при перезагрузке верхнего уровня я получаю карту, когда и где их широта и долгота также являются нулевыми. Пожалуйста, направляйте меня.Google Map в таблицеView

+0

Это звучит, как вы можете лениво инстанцируют и вставить вид Google Map программно. 'dequeueReusableCell' может дать вам ячейки, у которых уже создана карта. Однако я не знаю, ясно ли, что вы спрашиваете, и я также предостерег бы от создания слишком многих из этих дорогих просмотров. Возможно, есть решение, которое включает в себя создание статических изображений, показывающих местоположение, которое вы хотите видеть. –

ответ

5

Вид карты - дорогой вид для создания экземпляра. Даже при использовании dequeueReusableCellWithIdentifier он по-прежнему будет ресурсоемким с большим количеством элементов.

Я считаю, что использование способа создания изображения статической карты из вашей комбинации долготы и широты - ваш лучший выбор.

Вы можете посмотреть here и вы можете видеть, как легко построить вызов API для многих популярных провайдеров карт, таких как Google для статического изображения карты, как, например:

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

Также стоит отметить, что некоторые из этих поставщиков могут иметь ограничения (например, Google может потребоваться ключ API в случае высокого трафика). Поэтому будьте осторожны после некоторых исследований.

+0

Что насчет карты яблока? –

+0

Возможно, вы можете использовать 'MKMapSnapshotter'. Для этого нужны некоторые параметры, такие как регион, и моментальный снимок, и это даст вам UIImage для вывода. Он доступен для iOS 7 и выше, а также работает асинхронно. –

+0

спасибо за комментарий, но я уже это сделал. –

1

Похоже, вы столкнулись две проблемы

1) Уже упомянутый один «Карта появляется даже тогда, когда данные ноль»

2) вопрос производительности (это не упоминается, хотя здесь)

первый из них связан с дедукцией ячейки. Когда вы перезагружаете таблицу, ячейка будет повторно использована (не создается снова).

Когда вы вернуть ячейки для строки в

tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) 

ячейка с просмотром карты может получить возврат, поэтому вы получаете нежелательную карту там. Вы должны сделать это, чтобы предотвратить это.

2:

Когда пришел к производительности, его не правильный подход, чтобы показать MapView в каждой клетке. Альтернативный подход, чтобы сделать изображение из вашей карты URL

использовать этот

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

Что такое карта яблока? –

Смежные вопросы