#ios #swift #mkmapview #mkannotation #mkannotationview
#iOS #swift #mkmapview #mkannotation #mkannotationview
Вопрос:
В моем приложении есть вид карты, который отображает местоположение пользователя. при нажатии на местоположение пользователя отображается изображение, как показано ниже:
есть ли способ настроить это изображение по своему вкусу, например, я хотел бы показать фотографию, которую пользователь имеет в своем профиле, или любое другое статическое изображение, которое я хотел бы добавить.
аналогично тому, как карты Apple отображают изображение вашего профиля в точке вашего местоположения.
как я могу это сделать здесь?
вот мой код:
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
if annotation is MKUserLocation {
print("user location image tapped")
return nil
}
let reuseId = "pin"
var pinView = mapView.dequeueReusableAnnotationView(withIdentifier: reuseId) as? MKPinAnnotationView
if pinView == nil {
pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
pinView?.animatesDrop = true
pinView?.canShowCallout = true
pinView?.isDraggable = true
// pinView?.pinColor = .purple
let rightButton: AnyObject! = UIButton(type: UIButton.ButtonType.detailDisclosure)
pinView?.rightCalloutAccessoryView = rightButton as? UIView
}
else {
pinView?.annotation = annotation
}
return pinView
}
любая помощь по этому поводу? Спасибо.
Комментарии:
1. вы написали сами или скопировали где-нибудь? не поймите меня неправильно, но есть некоторые нулевые элементы управления, о которых я понятия не имею, можете ли вы объяснить подробнее. почему вы использовали MKPinAnnotation, а не MKAnnotationView?
2. потому что с MKPinAnnotation у меня могут быть всплывающие окна, которые предоставляют пользователю более подробную информацию, которую MKAnnotationView не поддерживает. но здесь это не обсуждается, что вы не понимаете в моем вопросе? @sekoyaz
3. хм, тогда попробуйте это, я добавляю, чтобы ответить, было бы полезно @mike
Ответ №1:
let imageView = UIImageView(frame: CGRect(0, 0, 25, 25))
imageView.image = UIImage(named: "userpic");
imageView.layer.cornerRadius = imageView.layer.frame.size.width / 2
imageView.layer.masksToBounds = true
anotationView.frame = imageView.frame
Комментарии:
1. спасибо за ваш ответ, но когда я пытаюсь это сделать, он сообщает мне, что у анотации нет фрейма-члена
2. в представлении аннотации есть рамка, мой друг, а значение по умолчанию равно 0: l
3. куда бы я поместил приведенный выше код в моем сегменте кода? потому что он показывает мне ошибки и говорит, что у него нет фрейма. вы кодируете вообще или вы кодируете это в рамках моей функции MapView?
4. да, в этом проблема, куда мне поместить приведенный выше код? у меня есть несколько функций mapview, куда бы я поместил этот код для достижения того, что мне нужно? Спасибо
5. я делаю это таким образом, пожалуйста, проверьте мой отредактированный вопрос