iPhone自定义引脚位置问题

发布于 2024-11-14 22:46:54 字数 226 浏览 0 评论 0原文

我有一个使用 iPhone 地图套件的应用程序。它显示了一组标准引脚。 现在我切换到引脚的自定义图像(使用 MKMapViewDelegate)

问题是自定义引脚未居中 - 自定义引脚指向原始位置附近。

问题是 iPhone 如何使用自定义 PIN 码。例如:我们有一个 50x50 像素的图钉图像。我们有全局坐标(经度、纬度):XY

iPhone 如何将图像居中?

谢谢

I have an application that uses iphone map kit. It shows set of standard pins.
Now I switch to custom images for pins (using MKMapViewDelegate)

The problem is that custom pins are not centered right - custom pin pointing to a location near original.

The question is how iphone works with custom pin. For example: let's have a image for pin 50x50 pixels. And we have global coordinate (long, lat): XY

How will iphone center image?

thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

◇流星雨 2024-11-21 22:46:54

如果您将自定义图像分配给图像属性。显示注释时,图像将以目标地图坐标为中心显示。如果不希望图像以地图坐标为中心,可以使用 centerOffset 属性在任意方向水平和垂直移动中心点。

因此自定义图像仅显示在目标坐标的中心。

MKAnnotationView* aView = [[[MKAnnotationView alloc] initWithAnnotation:annotation

                                  reuseIdentifier:@"MyCustomAnnotation"] autorelease];

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

aView.centerOffset = CGPointMake(10, -20);     

来源:Apple 类参考MKMapView

If you assign your custom image to the image property. When the annotation is displayed, the image is displayed centered over the target map coordinate. If you do not want the image to be centered on the map coordinate, you can use the centerOffset property to move the center point horizontally and vertically in any direction.

So the custom image is displayed in the center of your targeted coordinates only.

MKAnnotationView* aView = [[[MKAnnotationView alloc] initWithAnnotation:annotation

                                  reuseIdentifier:@"MyCustomAnnotation"] autorelease];

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

aView.centerOffset = CGPointMake(10, -20);     

Source: apple class reference for MKMapView

只有一腔孤勇 2024-11-21 22:46:54

解决方案是在mapView的委托中设置中心偏移,而不是在注释视图本身中设置中心偏移:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
    static NSString* const kPinIdentifier = @"pinidentifier";

    PinAnnotationView* customPinView = [[[PinAnnotationView alloc]
                                           initWithAnnotation:annotation reuseIdentifier:kPinIdentifier] autorelease];
    customPinView.canShowCallout = NO;

    // Here !!
    customPinView.centerOffset = CGPointMake(0, -21.5f);

    return customPinView;
}

The solution is to set center offset in the delegate of the mapView, and not in the annotation view it self:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
    static NSString* const kPinIdentifier = @"pinidentifier";

    PinAnnotationView* customPinView = [[[PinAnnotationView alloc]
                                           initWithAnnotation:annotation reuseIdentifier:kPinIdentifier] autorelease];
    customPinView.canShowCallout = NO;

    // Here !!
    customPinView.centerOffset = CGPointMake(0, -21.5f);

    return customPinView;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文