从MKPlacemark创建MKMapitem时,MKMapitem的 Placemark.name 为零


MKPlacemark *placemark1 = [[MKPlacemark alloc] initWithPlacemark:mapItem1.placemark];
MKMapItem *item = [[MKMapItem alloc] initWithPlacemark:placemark1];
NSLog(@"placemark1.name is - %@", placemark1.name)

placemark1.name 是 - 星巴克

NSLog(@"mapItem1's placemark.name is - %@", mapItem1.placemark.name) 

mapItem1的 placemark.name 是 - 星巴克

NSLog(@"item's placemark.name is - %@", item.placemark.name) 

项目的 placemark.name 为 - 无

mapItem1 具有适当的值。 mapItem1.placemark.name 是@"Startbucks"。

当我像上面这样实现时,item.placemark.name 为零。但 placemark1.name 是@"Sartbucks"。

当我用另一个MKPlacemark制作MKMapItem时,它也在这个MKMapItem中放置了 mark.name 是零。

我不知道为什么这些结果回来了。

我认为必须返回与原始地标相同的值。

我注意到如果你分配MapItem的名称,地标会显示名称。

extension MKPlacemark {
    var toMapItem: MKMapItem {
        let item = MKMapItem(placemark: self)
        item.name = name
        return item
    }
}

我假设mapItem1MKMapItem的类型?如果这是真的,则不需要初始化新的 MKPlacemark 对象 (*placemark1),也不需要将 placemark1 存储在新的 MKMapItem 对象 (*item) 中。

由于您在代码中调用 mapItem1 上的地标 (mapItem1.placemark),我认为我假设它是 MKMapItem 类型是对的。

总而言之,您根本不需要这些代码行:

MKPlacemark *placemark1 = [[MKPlacemark alloc] initWithPlacemark:mapItem1.placemark];
MKMapItem *item = [[MKMapItem alloc] initWithPlacemark:placemark1];

您的 MKMapItem *mapItem1 将按原样工作。这有意义吗?你在这里重新发明轮子。只需在您需要使用它的地方使用mapItem1.placemark即可。我一直在做一个使用 mapkit 的项目,所以如果你有任何问题,我很乐意回答。

相关内容

  • 没有找到相关文章

最新更新