2

我想在 mapView 上显示比例。我找到了这个线程,我将以下代码添加到我的 mapViewController.m 中:

- (void)mapView:(MKMapView *)map regionDidChangeAnimated:(BOOL)animated {
MKCoordinateSpan span = mapView.region.span;
NSLog(@" 1 = ~111 km -> %f = ~ %f km ",span.latitudeDelta,span.latitudeDelta*111);

}

上面的代码记录了从地图视图中显示的地图区域顶部到底部的距离(以公里为单位),并且只要该距离发生变化,它就会更新。下一个合乎逻辑的步骤是将该信息(来自我的 NSLog)显示到 UILabel 中。我发现了这个线程,但它对我不起作用。需要明确的是,当我尝试将该代码输入到我的 viewDidLoad 或上面提到的 regionDidChangeAnimated 方法时,我收到一条错误消息,指出未定义“字符串”。我也尝试了这里解释的方法,得到了相同的结果(加上“%”出乎意料的说法)。

我想知道的是如何在 UILabel 中显示我的 NSLog 输出。一旦我弄清楚了,我计划在屏幕的一侧添加一个英寸长的条(只是一个一英寸长的线条的图片),并将 NSLog 输出除以从顶部到顶部的英寸数地图视图的底部。然后我将在 UILabel 中显示该线旁边的公里数,使其看起来类似于传统地图上的比例。我还必须编辑 UILabel 只说公里数,因为 NSLog 也会写出很多上下文信息(例如,“2013-07-11 15:02:20.775 Controller 2.0[1076:907] 1 = ~111 公里 -> 15.994178 = ~ 1775.353763 公里”)。

Controller 2.0 是我的应用程序的名称(避免混淆 RE NSLog)

谢谢!

编辑 - 根据 KHansenSF 的建议,我尝试添加一个字符串。没有改变。这是我所做的:在.h 的@interface 中,我写道

IBOutlet UILabel *scaleLabel;
NSString *latDistance;

然后在 } 之后我写道:

@property (weak, nonatomic) IBOutlet MKMapView *mapView;
@property (nonatomic, retain) IBOutlet UILabel *scaleLabel;
@property (nonatomic, retain) NSString *latDistance;
- (IBAction) getLatDistance;

然后在.m中我综合了所有内容并写了

scaleLabel.text = latDistance;

在 viewDidLoad 和

- (IBAction) getLatDistance
{
MKCoordinateSpan span = mapView.region.span;
NSString *latDistance = [NSString stringWithFormat:@" 1 = ~111 km -> %f = ~ %f km ",span.latitudeDelta,span.latitudeDelta*111];
}

在 viewDidLoad 之后。没有改变。我必须错误地声明某些东西或错误地传递信息,但不管我是否受到阻碍。任何输入表示赞赏。

注意-我刚刚在 GitHub 上找到用于向 MapView 添加比例的扩展,但该页面没有方向,并且自述文件为空。有人知道如何实现吗?或者,我发现这个线程是关于如何在 Android 上制作这样的规模的。可能这样的文件可以移植到 iOS,例如使用这样的工具。我将对此进行进一步调查,但感谢您提供任何意见。谢谢!

编辑-现在我已经完成了,这是成品的屏幕截图。出于隐私目的,我在标题中模糊了地图注释的内容和公司名称。它工作得很好!
在此处输入图像描述

4

2 回答 2

2

尝试这个:

- (void)mapView:(MKMapView *)map regionDidChangeAnimated:(BOOL)animated {

    MKCoordinateSpan span = mapView.region.span;

    NSString * scaleString = [NSString stringWithFormat:@" 1 = ~111 km -> %f = ~ %f km", span.latitudeDelta, span.latitudeDelta*111];

    NSLog(@"%@", scaleString);
    self.scaleLabel.text = scaleString;
}
于 2013-07-12T02:53:03.337 回答
0

我看不到你是如何创建字符串的。但是你会想要这样的东西来获得类似于 NSLog 的字符串

NSString *string = [NSString stringWithFormat:@" 1 = ~111 km -> %f = ~ %f km ",span.latitudeDelta,span.latitudeDelta*111];
于 2013-07-11T23:09:32.573 回答