在mapView上显示比例

时间:2013-07-11 23:03:51

标签: ios mkmapview uilabel scale nslog

我想在mapView上显示比例。我找到了this线程,我将以下代码添加到我的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中。我发现了this线程,但它对我不起作用。要清楚,我得到一个错误,说" string"当我尝试将该代码输入到我的viewDidLoad或我上面提到的regionDidChangeAnimated方法时,没有定义。我也尝试了解释here的方法,我得到了相同的结果(加上一些说法"%"意外)。

我想知道的是如何在UILabel中显示我的NSLog输出。一旦我弄明白了,我计划在屏幕的一侧添加一英寸长的条形图(只是一条长度为1英寸的图片)并将NSLog输出除以从顶部到顶部的英寸数。 mapView的底部。然后我将在该线旁边的UILabel中显示km的数量,这样它就会看起来与传统地图上的比例相似。我还必须编辑UILabel以仅说出公里数,因为NSLog也写出了大量的上下文信息(例如," 2013-07-11 15:02:20.775 Controller 2.0 [1076:907] ] 1 = ~111 km - > 15.994178 = ~1775.353763 km")。

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之后。没有改变。我必须正确地宣布错误或错误地传递信息,但不管我是否受到阻碍。任何输入都表示赞赏。

注意 - 我刚刚找到了this扩展名,用于在GitHub上向MapView添加比例,但该页面没有方向且ReadMe为空。有谁知道如何实现这个?或者,我发现this线程如何在Android上制作这样的比例。可能这样的文件可以移植到iOS,例如使用这样的工具。我将进一步调查这一点,但任何意见都表示赞赏。谢谢!

编辑 - 现在我完成了,这是成品的截图。出于隐私目的,我在标题中模糊了地图注释的内容和公司名称。它工作得很漂亮!
enter image description here

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

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

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