-1

私は3種類の場所を持っています。

サーバーからデータを取得し、それを解析して mapView に場所を表示しています。

データの種類ごとに異なる色を表示したい。3種=3色。

どうすればこれを制御できますか?

4

3 に答える 3

1
Try this,
 annotation1.subtitle = @"1st annotation"; 
     annotation2.subtitle = @"2st annotation"; 
       annotation3.subtitle = @"3st annotation";
    Check annotation 
       if ([annotation.subtitle isEqualToString:@"1st annotation"]) 
       { 
          //change color 
         }
          else if ([annotation.subtitle isEqualToString:@"2st annotation"])
          { 
           //change color 
                 } 
         else if ([annotation.subtitle isEqualToString:@"3st annotation"]) 
          { 
          //change color 
           }
于 2012-12-27T11:51:38.103 に答える
1

viewForAnnotationこれを行うためのデリゲート メソッドを実装します。

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
    static NSString *identifier = @"MyLocation";
    if ([annotation isKindOfClass:[yourAnnotationLocation class]])
    {

        MKAnnotationView *annotationView = (MKAnnotationView *) [_mapView dequeueReusableAnnotationViewWithIdentifier:identifier];
        if (annotationView == nil)
        {
            annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
            annotationView.enabled = YES;
            annotationView.canShowCallout = YES;
            //if you need image you can set it like
            //annotationView.image = [UIImage imageNamed:@"yourImage.png"];//here we use a nice image instead of the default pins
            annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
        }
        else
        {
            annotationView.annotation = annotation;
        }
        if ([annotation.title isEqualToString:@"Midhun"])
        {
             annotationView.pinColor = MKPinAnnotationColorGreen;
        }
        else
        {
            annotationView.pinColor = MKPinAnnotationColorRed;
        }
        return annotationView;
    }

return nil;
}

MKAnnotationカスタム プロパティを注釈に設定するには、プロトコルに準拠するクラスを追加します。

#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>

@interface MyLocation : NSObject <MKAnnotation> {
    NSString *_name;
    NSString *_address;
    int _yourValue;
    CLLocationCoordinate2D _coordinate;
}

@property (copy) NSString *name;
@property (copy) NSString *address;
@property (assign) yourValue;
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;

- (id)initWithName:(NSString*)name address:(NSString*)address coordinate:(CLLocationCoordinate2D)coordinate;

@end

これは素晴らしいチュートリアルです。

于 2012-12-27T11:49:15.117 に答える
1

緯度と経度の比較で何かをすることができます

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation { static NSString *identifier = @"yourIdentifier";  
MKPinAnnotationView *pin = (MKPinAnnotationView *) [self.mapView dequeueReusableAnnotationViewWithIdentifier:identifier];
if([annotation coordinate].latitude==YourLocationLatitude)
{

    pin.image=[UIImage imageNamed:@"Flag-red.png"];
}
else
{
    pin.image=[UIImage imageNamed:@"Flag-green.png"];
}}
于 2012-12-27T11:59:29.933 に答える