UIWebview中的Google地图直接显示行车路线而非地图

时间:2011-07-11 10:01:14

标签: iphone ipad

我在UIWebview中加载谷歌地图,为源和目的地提供lat长坐标。但问题是它显示了加载时的行车路线。如果我们想查看地图,那么我们必须点击在地图旁边提供的地图按钮。我需要在加载网页视图时直接显示地图而不是行车路线。 任何人都可以告诉我如何实现这一目标。

 UIWebView *webView=[[UIWebView alloc]initWithFrame:webViewRect];
                webView.delegate=self;
                webView.scalesPageToFit=YES;

                CLLocationCoordinate2D start = { 34.052222, -118.243611 };
                CLLocationCoordinate2D destination = { 37.322778, -122.031944 };        
                //NSString *urlString=@"http://maps.google.co.in/";

                NSString *googleMapsURLString = [NSString stringWithFormat:@"http://maps.google.com/?saddr=%1.6f,%1.6f&daddr=%1.6f,%1.6f",
                                                 start.latitude, start.longitude, destination.latitude, destination.longitude];
                NSLog(@"URL string-----> %@",googleMapsURLString);



                NSURL *url=[NSURL URLWithString:googleMapsURLString];
                NSURLRequest *requestObj=[NSURLRequest requestWithURL:url];
                [webView loadRequest:requestObj];
                [self.view addSubview:webView];

此外,我想知道如果我需要从说到位置A到B和从B到C,我将如何传递URL。

3 个答案:

答案 0 :(得分:9)

只需更改您的网址

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

使用以下代码

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

唯一添加的内容是output=embed,它会强制网络直接打开地图,而不会打开要求填写输入框的源和目标的屏幕。

如需更多说明,您还可以查看Google Map Parameters

中谷歌地图中使用的所有参数

以上将解决您的第一个查询。

关于第二个查询 即如果我需要从A位置到B位置,从B位置到C位置,我想知道如何传递URL。 抱歉不知道

答案 1 :(得分:1)

    NSString *ll = [NSString stringWithFormat:@"%f,%f",
                        self.placemark.location.coordinate.latitude,
                        self.placemark.location.coordinate.longitude];
    ll = [ll stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSString *url = [NSString stringWithFormat:@"http://maps.google.com/?q=%@", ll];
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];

    [self.tableView deselectRowAtIndexPath:indexPath animated:NO];

答案 2 :(得分:0)

在仔细阅读上面链接的Google Map Parameters文档时,我遇到了问题第二部分的答案。

  

此外,我想知道如果我需要从说到位置A到B和从B到C,我将如何传递URL。

参数空间的Directions部分似乎允许通过将“+ to:”子句附加到查询参数的daddr组件来按顺序路由多个目标。

例如:

https://maps.google.com/maps?saddr=Ferry+Plaza+SF&daddr=Coit+Tower+to:Union+Square

显示从旧金山的渡轮广场开始的路线,然后按顺序前往Coit Tower,然后是Union Square。

在该维基的上述链接路线部分中了解'daddr ='参数以获取更多信息。

通常,您可以通过参数检查找出Google Maps网址的外观。 E.g:

  • 转到maps.google.com并查询包含您感兴趣的路线,目的地等的地图。
  • 如果您的地图看起来像您想要的那样,请单击链接图标(看起来像链)以获取与您指定的参数对应的URL的副本。
  • 将此网址粘贴到浏览器地址栏中。
  • 继续从查询字符串中解析出参数,以确定哪些部分对应于地图上的内容。
  • 如果您不确定某个参数在做什么,请与上面的mapki.com链接等网页进行交叉引用。

您应该能够使用此过程推断出新类型查询的制定。