2016-09-30 4 views
2

Вот небольшая проблема ..MKAnnotationView не отображает изображение

Я сделал некоторый код, который должен изменить образ штифта, что получить упал в MAPview. URL-адрес «taxi.png» работает с представлением изображения, так что это не текущая проблема.

Я также попытался:

pinView?.image = UIImage(named: "taxi.png") 

Код:

if pinView == nil{ 
     pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId) 
     pinView?.canShowCallout = true 
     var imageTaxi = UIImage(named: "taxi.png")! 
     imageTaxi = imageTaxi.withAlignmentRectInsets(UIEdgeInsetsMake(0, 0, imageTaxi.size.height/2, 0)) 
     pinView?.image = imageTaxi 
     } 

     let button = UIButton(type: .detailDisclosure) 
     pinView?.rightCalloutAccessoryView = button 
     return pinView 

Видит кто-то, что должно быть исправлено здесь, чтобы просмотреть изображение?

EDIT: теперь у меня есть это, и я до сих пор стандартный красный Pinpoint ..

let annotation = CustomPin() 
annotation.coordinate = location 
annotation.title = "Boek Taxi" 
annotation.subtitle = "" 
let image = UIImage(named: "taxi.png") 

annotation.Image = image 
self.mapView.addAnnotation(annotation) 
let reuseId = "pin" 
    var pinView = mapView.dequeueReusableAnnotationView(withIdentifier: reuseId) 

    if pinView == nil{ 
     pinView = MKPinAnnotationView(annotation: CustomPin() as MKAnnotation, reuseIdentifier: reuseId) 
     pinView?.canShowCallout = true 

    } else { 
     pinView?.annotation = CustomPin() as MKAnnotation 
    } 

    let cpa = annotation as! CustomPin 

    pinView?.image = cpa.Image 

    let button = UIButton(type: .detailDisclosure) 
    pinView?.rightCalloutAccessoryView = button 
    return pinView 
    } 

Есть вещи, которые я более посмотрел?

+0

Посмотри на это [ой контактного изображения] (http://stackoverflow.com/a/38159048/4080925) – MwcsMac

+0

Убедитесь, что этот код вызывался на всех (набор точки останов и/или распечатать заявление журнала). Возможно, делегат не был указан, или подпись метода неверна. Если это не так, они прояснят: когда вы говорите, что есть «проблема», что именно вы видите? Красный булавка? Ничего? Сбой? – Rob

ответ

-1

Попробуйте

создать класс для пользовательских аннотаций Примера:

class CustomPin: MKPointAnnotation { 

    let Image = UIImage 

} 

Затем в функции для пояснительных сделать это

func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? { 
     let reuseId = "image" 

     var pinView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId) 
     if pinView == nil { 

      pinView = MKAnnotationView(annotation: customPin as MKAnnotation, reuseIdentifier: reuseId) 
      pinView!.canShowCallout = true 

     } else { 

      pinView!.annotation = customPin as MKAnnotation 
     } 

     let cpa = annotation as! CustomPin 
     pinView!.image = cpa.Image 

     let button = UIButton(type: UIButtonType.detailDisclosure) 

     pinView!.rightCalloutAccessoryView = button 


     return anView 


     } 

Наконец добавить пользовательское изображение, если вы создаете аннотацию в своем viewDidLoad() или как хотите:

       let Annotation = customPin() 
           Annotation.coordinate = //cooridnate 
           Annotation.title = //title 
           Annotation.subtitle = //subtitle 

           let image = UIImage(named: "taxi.png") 
           Annotation.Image = image 

Надеется, что это помогает

+0

@Rob отлично работает в моем приложении, что делает именно то, что он просит –

+0

Спасибо за ваш ответ @TripPhillips, но когда я делаю это, у меня все еще есть красная стандартная точка. Не могли бы вы посмотреть код, который я загрузил в своем вопрос сообщение. Я был бы очень благодарен – royvano

+0

@royvano Вам нужно использовать MKAnnotationView вместо MKAnnotationPinView. Это ваша проблема. Поэтому, когда вы определяете pinView, используйте MKAnnotationView. Если вы используете MKAnnotationPinView, вы будете получать булавку каждый раз. –