- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在尝试从 Swift 1.2 更改为 Swift 2.0,我正处于更改的末尾。目前我正在 MapViewController 中进行更改,没有任何错误或警告,但我的图钉 (annotationView) 的自定义图像未分配给图钉,它显示默认图像(红点)。
这是我的代码,我希望你能给我一些提示,因为我认为一切都很好,但它仍然无法正常工作:
func parseJsonData(data: NSData) -> [Farmacia] {
let farmacias = [Farmacia]()
do
{
let jsonResult = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers) as? NSDictionary
// Parse JSON data
let jsonProductos = jsonResult?["farmacias"] as! [AnyObject]
for jsonProducto in jsonProductos {
let farmacia = Farmacia()
farmacia.id = jsonProducto["id"] as! String
farmacia.nombre = jsonProducto["nombre"] as! String
farmacia.location = jsonProducto["location"] as! String
let geoCoder = CLGeocoder()
geoCoder.geocodeAddressString(farmacia.location, completionHandler: { placemarks, error in
if error != nil {
print(error)
return
}
if placemarks != nil && placemarks!.count > 0 {
let placemark = placemarks?[0]
// Add Annotation
let annotation = MKPointAnnotation()
annotation.title = farmacia.nombre
annotation.subtitle = farmacia.id
annotation.coordinate = placemark!.location!.coordinate
self.mapView.addAnnotation(annotation)
}
})
}
}
catch let parseError {
print(parseError)
}
return farmacias
}
func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? {
let identifier = "MyPin"
if annotation.isKindOfClass(MKUserLocation) {
return nil
}
// Reuse the annotation if possible
var annotationView = mapView.dequeueReusableAnnotationViewWithIdentifier(identifier)
if annotationView == nil
{
annotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: identifier)
annotationView!.canShowCallout = true
}
annotationView!.image = UIImage(named: "custom_pin.png")
let detailButton: UIButton = UIButton(type: UIButtonType.DetailDisclosure)
annotationView!.rightCalloutAccessoryView = detailButton
print(annotationView!.image)
return annotationView
}
提前致谢
问候。
最佳答案
已接受的答案无效,因为它在 else
block 中未初始化 annotationView
。
这是一个更好的解决方案。如果可能,它会出列注释 View ,否则会创建一个新 View :
// https://stackoverflow.com/a/38159048/1321917
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
// Don't want to show a custom image if the annotation is the user's location.
guard !(annotation is MKUserLocation) else {
return nil
}
// Better to make this class property
let annotationIdentifier = "AnnotationIdentifier"
var annotationView: MKAnnotationView?
if let dequeuedAnnotationView = mapView.dequeueReusableAnnotationView(withIdentifier: annotationIdentifier) {
annotationView = dequeuedAnnotationView
annotationView?.annotation = annotation
}
else {
annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: annotationIdentifier)
annotationView?.rightCalloutAccessoryView = UIButton(type: .detailDisclosure)
}
if let annotationView = annotationView {
// Configure your annotation view here
annotationView.canShowCallout = true
annotationView.image = UIImage(named: "yourImage")
}
return annotationView
}
关于ios - iOS 中 annotationView 中的自定义图钉图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32839970/
我想在选择注释时更新注释。我如何在 SKMaps for iOS 中执行此操作? 最佳答案 使用 updateAnnotation API - 有了它,您可以更改所有参数(但屏幕上的位置除外)。 关于
我正在开发一个简单的应用程序,它显示带有我自定义的一些引脚的 map 。每当我点击我的自定义图钉时,我都会推送 detailedMapViewController看annotationView . 一
在我的 MapView 中有多个 annotationView,每个都有自己的图像,有时当我按下图像时,如果不重新加载 viewController,它就会消失并且永远不会回来。为什么会这样? -
当缩放级别更改时,我需要更改 AnnotationView 的 centerOffset 属性。我不想再次删除和添加 Annotations。 那么如何在缩放后访问和更新 AnnotationView
我正在使用以下代码来制作自定义 AnnotationView。 我的CustomPointAnnotation是MKPointAnnotation的子类,具有Player的setter/getter
我创建了一个类似于 this project 的自定义 MKAnnotationView由苹果公司创建。在其中,我放置了一个 imageView 和一个标签。但是,当我在 map 上滚动和缩放时,我注
我正在使用 MapKit 在 map 上显示数据。为此,我使用了 Custom AnnotationView 和 Custom CalloutView。但问题是,当我让 AnnotationView
我在 IOS4 mapkit 中有一个可拖动的注释,我试图在注释被拖动到新位置时调用一个事件。 我的代码目前看起来像: - (void)mapView:(MKMapView *)mapView
我创建了苹果 map 应用程序并使用 MKCircle 和 MKPolyline 处理位置映射。 我用过 func mapView(mapView: MKMapView, viewForAnnotat
我正在尝试从 Swift 1.2 更改为 Swift 2.0,我正处于更改的末尾。目前我正在 MapViewController 中进行更改,没有任何错误或警告,但我的图钉 (annotationVi
选择表格 View 单元格后,如何将 MKAnnotationView 放置在指定注释上?我是否需要在 TableView 的 didSelectRowAtIndexPath 中调用函数 mapVie
当我子类化 MKMarkerAnnotationView 时,我可以免费在 MarkerView 下方获得这些漂亮的文本,显示标题和副标题。 当我子类化MKAnnotationView时,我可以完全自
我有这个问题: 在我的应用程序中,我使用这个非常简单的代码: - (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView
我想在 iPhone 的 mapkit 中的 annotationView 中添加按钮,以便在单击该按钮时执行操作。我如何在单击该按钮时执行操作?我也无法使用以下代码在注释 View 中添加按钮: -
我有下面的代码来设置图钉图像,基于数组中的哪个对象用于创建图钉。问题是图钉未显示图钉的正确图像。 func mapView(_ mapView: MKMapView, viewFor annotati
我想重现 iOS 仪表板在我的 map 注释上的效果,方法是在我长按其中一个时摇晃它们。然而,我一直坚持检测用户何时长按了一个按钮。这是代码: override init(annotation:MKA
如何将 annotationView 放在不是路线图的 map 上,但它是这样的: 无法提供纬度和经度。我放什么坐标? 最佳答案 我认为这是一个 ImageView ,如果它是 ImageView ,
我有一个包含在 tabBarController 中的 viewController(带有 mapView)(我的名为 MapViewController 的 viewController 是 Tab
在我的应用程序中,我有一个带注释的 mkmapview。当我点击注释时,会出现一些带有附加信息的小 View 。 现在我想在点击 map 时隐藏此窗口,但在点击某些注释时则不想隐藏。 如何制作? 我认
你好,我想在我的自定义 annotationView 中覆盖 drawrect,所以当我写 [[_mapView viewForAnnotation:annotation] setNeedsDispl
我是一名优秀的程序员,十分优秀!