iphone開發:修改地圖藍色用戶位置iPhone軟體開發教學課程

 將mkmapview中的用戶當前所在位置的view修改成自己需要的ui。
效果如下:

代碼如下 :

 
源代碼這裡。全部復制即可。如果缺少某些方法(處理圖片的函數,請留言)
– (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
    if ([annotation isKindOfClass:[MKUserLocation class]])
    {
        static NSString* annotation_id = @"annotation_id";
        MKPinAnnotationView* pinView = (MKPinAnnotationView *)[map_view dequeueReusableAnnotationViewWithIdentifier:annotation_id];
        if (!pinView)
        {
            MKAnnotationView *annotationView = [[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:annotation_id] autorelease];
            annotationView.canShowCallout = YES;
//修改地圖的藍色圖片@"flag.png"
            UIImage *annotation_image = [UIImage imageNamed:@"flag.png"];
            CGRect resizeRect;
            resizeRect.size = annotation_image.size;
            CGSize maxSize = CGRectInset(map_view.bounds,0.0,0.0).size;
//這一段用於處理圖片,可以省略。這裡的目的是怕此圖片過大。
            if (resizeRect.size.width > maxSize.width)
            {
                resizeRect.size = CGSizeMake(maxSize.width, resizeRect.size.height / resizeRect.size.width * maxSize.width);
            }
            if (resizeRect.size.height > maxSize.height)
            {
                resizeRect.size = CGSizeMake(resizeRect.size.width / resizeRect.size.height * maxSize.height, maxSize.height);
            }
            
            resizeRect.origin = (CGPoint){0.0f, 0.0f};
            UIGraphicsBeginImageContext(resizeRect.size);
//這裡如果你的圖片大小合適,不用處理。直接用你圖片就行瞭。
            UIImage *resize_image = [annotation_image imageByScalingAndCroppingForSize:CGSizeMake(45, 45)];
            CGRect rect = CGRectMake(0.0, 0.0, 45, 45);
            [resize_image drawInRect:rect];
            
            UIImage *resizedImage = UIGraphicsGetImageFromCurrentImageContext();
            UIGraphicsEndImageContext();
            
            annotationView.image = resizedImage;
            annotationView.opaque = NO;
            return annotationView;
        }
        else
        {
            pinView.annotation = annotation;
        }
        return pinView;
    }
    return nil;
}
 

摘自 雲懷空-abel

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *