gpt4 book ai didi

iphone - 如何向 map View 添加多个颜色图钉。

转载 作者:可可西里 更新时间:2023-11-01 06:25:12 25 4
gpt4 key购买 nike

我有一张 map ,其中包含 3 类兴趣点。目前我已经让它们展示了,但是它们都是相同的颜色。我怎样才能让它们根据它们所属的类别显示颜色?

我四处搜索,找不到任何我能理解的东西应用到我的代码中。

这是我当前用于注释引脚的代码:

-(void)pins:(NSString *)name lat:(NSString *)lat lon:(NSString *)lon poiID:(NSString *)poiID
{

//cast string to float
CGFloat Lat = (CGFloat)[lat floatValue];
CGFloat Lon = (CGFloat)[lon floatValue];

//Set coordinates of pin
CLLocationCoordinate2D coordinate;
coordinate.latitude = Lat;
coordinate.longitude = Lon;

//Create Pin
MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init];
//set details
[annotation setCoordinate:coordinate];
[annotation setTitle:name];
[annotation setAccessibilityLabel:poiID]; //set the label eq to the id so we know which poi page to go to


// Add pin to map
[self.showMapView addAnnotation:annotation];
}

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
//create annotation
MKPinAnnotationView *pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"pinView"];
if (!pinView) {
pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"pinView"];
pinView.pinColor = MKPinAnnotationColorRed;
pinView.animatesDrop = FALSE;
pinView.canShowCallout = YES;

//details button
UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
pinView.rightCalloutAccessoryView = rightButton;

} else {
pinView.annotation = annotation;
}
return pinView;
}

这是我的 Code 的其余部分以防万一。

感谢您的帮助。

最佳答案

做起来很简单,只需添加一个 if 语句来检查标题或副标题。当我使用 map 时,我的注释类有一个副标题,它会说明地点是什么,即酒店、机场等。我会添加一个 if 语句来检查,然后设置针点是什么并设置什么颜色我希望图钉是

if([annotation.subtitle isEqualToString:@"Hotel"])
{
pinView.animatesDrop=YES;
pinView.pinColor=MKPinAnnotationColorPurple;


}else if([annotation.subtitle isEqualToString:@"Airport"])
{
pinView.animatesDrop=YES;
pinView.pinColor=MKPinAnnotationColorRed;
}

或者如果你想让它成为一张图片,就用

pinView.image = [UIImage imageNamed:@"airportMarker.png"];

编辑:更新代码

像这样创建一个自定义注释类

@interface MyAnnotation : NSObject<MKAnnotation> 
{

CLLocationCoordinate2D coordinate;
NSString* title;
NSString* subtitle;
NSInteger categoryID;
}
@property NSInteger categoryID;
@property (nonatomic, assign) CLLocationCoordinate2D coordinate;
@property (nonatomic, copy) NSString* title;
@property (nonatomic, copy) NSString* subtitle;

@end

然后当您将对象添加到屏幕时,给每个对象一个 ID,即

CLLocationCoordinate2D hotelCoordinates1;
hotelCoordinates1.latitude = 35.38355;
hotelCoordinates1.longitude = 1.11004;
MyAnnotation* exampleHotel=[[MyAnnotation alloc] init];
exampleHotel.coordinate=hotelCoordinates1;
exampleHotel.title=@"Example Hotel";
exampleHotel.subtitle=@"Hotel";
exampleHotel.categoryID = 1;

然后在这个方法里面

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
//create annotation

就这样

if([(MyAnnotation*)annotation categoryID] == 1)
{

}

您需要确保将注释转换为您创建的类的任何名称。就是这样。希望对您有所帮助!!

关于iphone - 如何向 map View 添加多个颜色图钉。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13136934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com