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' s placemark.name是 - 星巴克
NSLog(@"item's placemark.name is - %@", item.placemark.name)
item'的placemark.name是 - nil
mapItem1具有正确的值。 mapItem1.placemark.name是@" Startbucks"。
当我按上述方式实现时,item.placemark.name为nil。 但是placemark1.name是@" Sartbucks"。
当我用另一个MKPlacemark制作MKMapItem时,它也将此MKMapItem中的mark.name设为nil。
我不知道为什么这些结果会回来。
我认为必须返回原始地标的相同值。
答案 0 :(得分:3)
我注意到如果你指定了MapItem的名字,那么地标就会显示名称。
extension MKPlacemark {
var toMapItem: MKMapItem {
let item = MKMapItem(placemark: self)
item.name = name
return item
}
}
答案 1 :(得分:0)
我假设 mapItem1 的类型为 MKMapItem ?如果是这样,您不需要初始化新的MKPlacemark对象( * placemark1 ),也不需要将 placemark1 存储在新的MKMapItem对象中( *项强>)。
由于您在代码中的mapItem1上调用了地标(mapItem1.placemark),我认为我认为它是MKMapItem类型是正确的。
总结一下,根本不需要这些代码:
MKPlacemark *placemark1 = [[MKPlacemark alloc] initWithPlacemark:mapItem1.placemark];
MKMapItem *item = [[MKMapItem alloc] initWithPlacemark:placemark1];
您的MKMapItem * mapItem1将按原样运行。那有意义吗?你在这里重新发明轮子。只需使用mapItem1.placemark就可以使用它。我一直在研究一个使用mapkit的项目,所以如果你有任何问题,我很乐意回答它们。