【问题标题】:Multiple Google Maps Navigation多个谷歌地图导航
【发布时间】:2014-04-21 15:44:40
【问题描述】:

我觉得我在这里完全是个白痴,但我脑子里放了个屁,而且是 XCode 的新手。我有这段代码(如下)可以打开 Google 地图,让用户能够根据点击的按钮导航到特定的目的地。这是一个固定列表,在客场比赛旁边有一个导航选项,我是否正确地说我不需要新的视图控制器,因为谷歌地图应该只是在按下按钮时弹出?

我还需要在标题中创建一个IBOutlet 来创建按segue 的按钮。显然我不会将此代码放在- (void)viewDidLoad 中,因为我只希望它根据按钮按下来显示

- (void)getDirections {
    CLLocationCoordinate2D start = { (startLatitude), (startLongitude) };
    CLLocationCoordinate2D end = { (endLatitude), (endLongitude) };

    NSString *googleMapsURLString = [NSString stringWithFormat:@"http://maps.google.com/?saddr=%1.6f,%1.6f&daddr=%1.6f,%1.6f", start.latitude, start.longitude, end.latitude, end.longitude];

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:googleMapsURLString]];

}

【问题讨论】:

    标签: ios google-maps navigation


    【解决方案1】:

    如果我理解没问题,您需要打开 Google 地图为不同的比赛提供路线。

    首先,关于有没有新的视图控制器,你是对的,你不需要创建一个新的视图控制器,因为你正在调用

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:googleMapsURLString]];
    

    这应该会打开 GoogleMaps 以显示路线,因为您的出发地和目的地坐标都可以。如果没有可能的方向,GoogleMaps 仍然会打开并告诉您找不到方向。

    你应该做的是:

    1. 保留一个包含匹配目标坐标的数组。
    2. 注意您当前的坐标(如果您尝试提供从当前位置到比赛地点的路线)。
    3. 创建一个IBAction来处理按钮按下动作,如下:

      -(IBAction)buttonPressed:(id)sender {//您在此处打开 URL 的代码};

    4. 根据发件人,您可以检测到按下了哪个按钮。你有不同的方法来做到这一点。一种可能的方法是从 Interface Builder 为每个按钮添加一个标签,然后读取该标签以确定哪个按钮被按下。如果您有固定数量的按钮(例如 3),另一种选择是为每个按钮创建 IBOutlet 并将“发送者”与您的 IBOutlet 进行比较。一旦您知道哪个按钮是 buttonPressed IBAction 的发送者,您需要恢复与该按钮/匹配项关联的坐标。

    5. 请记住将按钮上的修饰内部事件与 IBAction 相关联。
    6. 如果您选择为每个按钮创建一个 IBOutlet,请记住将按钮与其插座链接。

    我希望这会有所帮助!

    【讨论】:

    • 谢谢!这确实有帮助,看来我已经把它变成了比实际更困难的东西。每次的起始位置都是相同的(主队场地)。就像您建议的那样,按钮的数量是固定的,总共 6 个,因此拥有 6 个不同的 IBOutlets 似乎是最好的解决方案。所以每个按钮都有相同的开始坐标,只是不同的结束坐标。我应该把目的地坐标放在哪里?仍然建议一个数组? ——
    • 很高兴知道它有帮助:),是的,您可以使用一个数组(将您的坐标映射到 NSValues),或者您可以简单地拥有 6 个坐标变量,或者使代码可重用并符合您的 POO可以创建一个模型对象,可能称为 Club... 或 Match...,它可以有一个名称、一个纬度、一个经度......所以你会有一个 Matches 数组,例如......数组的每个位置都映射到一个按钮......这将允许你将来创建新的 Match 对象并扩展您的应用程序。
    • 我想我会坚持使用 6 个不同的坐标变量,并为每个目的地设置 -(void)getDirections,每次都更改最终目的地。 IBOulet 的外观如何?使按钮调用代码以显示谷歌地图时出现问题。不知道我应该在哪里拖动事件内的触摸
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多