- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不明白为什么(理论上)与 MKPointAnnotation 关联的 MKPinAnnotationView 没有出现在 map 上。事实上,图钉出现了,但它不是应有的紫色...
这是代码:
MKPointAnnotation *myPersonalAnnotation= [[MKPointAnnotation alloc]init];
myPersonalAnnotation.title= [appDelegate.theDictionary objectForKey:@"theKey"];
myPersonalAnnotation.coordinate=CLLocationCoordinate2DMake(6.14, 10.7);
MKPinAnnotationView *myPersonalView=[[MKPinAnnotationView alloc] initWithAnnotation:myPersonalAnnotation reuseIdentifier:@"hello"];
myPersonalView.pinColor=MKPinAnnotationColorPurple;
[myMap addAnnotation:myPersonalAnnotation];
最佳答案
如果您想创建与默认红色图钉不同的注释 View ,则必须在 map View 的 viewForAnnotation
委托(delegate)方法中创建并返回它。
每当需要显示某些注释(内置用户位置或您添加的注释)时, map 都会自动调用 viewForAnnotation
委托(delegate)方法。
从调用 addAnnotation
之前删除 myPersonalView
的本地创建,并改为实现 viewForAnnotation
方法。
例如:
//in your current method...
MKPointAnnotation *myPersonalAnnotation= [[MKPointAnnotation alloc]init];
myPersonalAnnotation.title= [appDelegate.theDictionary objectForKey:@"theKey"];
myPersonalAnnotation.coordinate=CLLocationCoordinate2DMake(6.14, 10.7);
[myMap addAnnotation:myPersonalAnnotation];
//...
//add the viewForAnnotation delegate method...
-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
//if annotation is the user location, return nil to get default blue-dot...
if ([annotation isKindOfClass:[MKUserLocation class]])
return nil;
//create purple pin view for all other annotations...
static NSString *reuseId = @"hello";
MKPinAnnotationView *myPersonalView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:reuseId];
if (myPersonalView == nil)
{
myPersonalView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:reuseId];
myPersonalView.pinColor = MKPinAnnotationColorPurple;
myPersonalView.canShowCallout = YES;
}
else
{
//if re-using view from another annotation, point view to current annotation...
myPersonalView.annotation = annotation;
}
return myPersonalView;
}
确保设置了 map View 的 delegate
属性,否则将不会调用委托(delegate)方法。
在代码中,使用 myMap.delegate = self;
(例如,在 viewDidLoad
中),或者如果 myMap
是 在 Interface Builder 中建立连接>IBOutlet
.
关于ios - MKPinAnnotationView pinColor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13462007/
我不明白为什么(理论上)与 MKPointAnnotation 关联的 MKPinAnnotationView 没有出现在 map 上。事实上,图钉出现了,但它不是应有的紫色... 这是代码: MKP
目标是根据存储在结构数组中的某些值自定义引脚颜色。 根据此处的一些帮助,我实现了以下 viewForAnnotation 委托(delegate)方法,并且根据我的结构数据数组的大小在循环中迭代调用此
我有一个 MKMapView,其中有很多从解析器 xml 定义的注释引脚;那是我的代码: -(IBAction)LoadAnnotation:(id)sender { RXML element
是否可以删除给定 pinColor 的给定 MKMapView 上的所有注释?在为我的应用程序的一部分显示新注释之前,我试图清除 map 上所有用户输入的注释(图钉),但我不知道在有选择地删除注释方面
我正在尝试设置一个 map ,根据相关位置的类型/类别显示不同的图钉颜色。我知道这是一件很常见的事情,但我无法让 viewForAnnotation 委托(delegate)持续更新/设置图钉颜色。
MapView.Marker的颜色即使将颜色分配给 pinColor 后,默认的红色似乎也没有改变. 有什么问题吗? { this.state.markers.map(marker => {
我是一名优秀的程序员,十分优秀!