如何设置 MKPlacemark 的显示名称?

Posted

技术标签:

【中文标题】如何设置 MKPlacemark 的显示名称?【英文标题】:How to set the display name for MKPlacemark? 【发布时间】:2017-04-20 11:35:41 【问题描述】:

我正在尝试使用 Apple 的地图显示两个地方的路线。

对于这两个地方,名字和坐标我都有。

MKMapItem *currentLocation = [[MKMapItem alloc]
  initWithPlacemark:[[MKPlacemark alloc]
                        initWithCoordinate:paramModel.fromCoordinate2D
                     addressDictionary:nil]];
MKMapItem *toLocation = [[MKMapItem alloc]
  initWithPlacemark:[[MKPlacemark alloc]
                        initWithCoordinate:paramModel.toCoordinate2D
                         addressDictionary:nil]];
return [MKMapItem openMapsWithItems:@[ currentLocation, toLocation ]
                    launchOptions:@
                      MKLaunchOptionsDirectionsModeKey :
                          MKLaunchOptionsDirectionsModeDriving
                    ];

名称存储在paramModel 中。

我认为这可以通过使用addressDictionary 来实现?我试过kABPersonAddressStreetKeykABPersonAddressCityKey,但都不会出现在最终的路线视图中。

【问题讨论】:

【参考方案1】:

发现我可以直接修改MKMapItemname字段。

MKMapItem *currentLocation = [[MKMapItem alloc]
  initWithPlacemark:[[MKPlacemark alloc]
                    initWithCoordinate:paramModel.fromCoordinate2D
                 addressDictionary:nil]];
currentLocation.name = paramModel.fromName;

【讨论】:

【参考方案2】:

尝试将您的 MKPlacemark 创建为变量,然后像这样修改该变量上的标题字段:

MKPlacemark* placemark = [[MKPlacemark alloc]
                    initWithCoordinate:paramModel.fromCoordinate2D
                 addressDictionary:nil]];
placemark.title = @"Some Title";
placemark.subtitle = @"Some subtitle";

然后将变量设置为地图项构造函数中的参数。

【讨论】:

很抱歉,titlesubtitle 字段似乎是 readonly?

以上是关于如何设置 MKPlacemark 的显示名称?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取标注的 MKPlacemark 地址

如何在 iOS 中使用多个点在 Apple 地图中显示路线

如何将私有 IP 地址名称设置为通用名称以显示给用户?

MKPlacemark() 创建保留周期

MVC-如何根据在同一视图文本框中输入的值设置复选框的显示名称

如何在 Grafana 仪表板中将显示名称设置为自定义变量?