-6

マップに 2 つのフラグを表示したいのですが、これらはピンではありません。私はこれをよく検索しましたが、解決策を見つけることができませんでしたが、ピンとして追加しました。

助けてください

4

4 に答える 4

1

Map Overlay を探していMKOverlayViewます。

次のチュートリアルを確認してください。

オーバーレイの作成

  • の作成MKOverlayView

MKOverlayView次のようなサブクラスを作成します。

.h #インポート #インポート

@interface MapOverlayView : MKOverlayView
{
}
@end

.m

#import "MapOverlayView.h"

@implementation MapOverlayView

- (void)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)ctx
{

    UIImage *image = [UIImage imageNamed:@"yourImage.png"];
    CGImageRef imageReference = image.CGImage;

    MKMapRect theMapRect = [self.overlay boundingMapRect];
    CGRect theRect = [self rectForMapRect:theMapRect];

    CGContextDrawImage(ctx, theRect, imageReference); 
}

@end
  • オーバーレイの追加

viewForOverlay:オーバーレイを作成してマップに追加する ,inside を実装します。

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
{

    MapOverlay *mapOverlay = (MapOverlay *)overlay;    
    MapOverlayView *mapOverlayView = [[[MapOverlayView alloc] initWithOverlay:mapOverlay] autorelease];

    return mapOverlayView;
}
于 2013-07-29T11:33:10.737 に答える
1

MKAnnotationViewメソッドの以下のようなimageプロパティでそれを行うことができますviewForAnnotation:..

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

    static NSString *identifier = @"Current";           
    MKAnnotationView *annotationView = (MKAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:identifier];

    if (annotationView == nil)
    {
        annotationView = [[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier] autorelease];
    }

    if (annotation == mapView.userLocation)
        return nil;

    annotationView.image = [UIImage imageNamed:@"yourImageName.png"];
    annotationView.annotation = annotation;            
    annotationView.canShowCallout = YES;
    return annotationView;
}
于 2013-07-29T11:29:49.697 に答える
0

あなたが話している場合MKMapView
ピン注釈の代わりに画像を表示するには、MKMapViewのメソッドをオーバーライドする必要があります

- (MKAnnotationView *)viewForAnnotation:(id < MKAnnotation >)annotation

このような:

- (MKAnnotationView *)viewForAnnotation:(id < MKAnnotation >)annotation{
    static NSString* annotationIdentifier = @"Identifier";
    MKAnnotationView *annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:annotationIdentifier];
    if(annotationView)
        return annotationView;
    else
    {
        MKAnnotationView *annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:annotationIdentifier];
        annotationView.canShowCallout = YES;
// here you need to give the image you want instead of pin
            annotationView.image = [UIImage imageNamed:[NSString stringWithFormat:@"balloon.png"]];        
            return annotationView;
        }
        return nil;
        }
于 2013-07-29T11:31:00.730 に答える
0

これを試してください

annotation = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"try"];
    annotation.canShowCallout = YES;

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


    return annotation;

また、annotation.animatesDrop プロパティを使用しないでください。

于 2013-07-29T11:29:06.950 に答える