Направления Google Maps в виде карты на iPhone

Я работаю над приложением для iPhone, которому необходимо отображать маршруты ходьбы от точки A до другой точки B в UIWebView, который загружает URL-адрес Google Maps с соответствующими параметрами.

Пример URL-адреса, который я загружаю:

[self.myWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://maps.google.com/maps?saddr=55.720923,12.513428&daddr=55.745666,12.546387"]]];

Мне нужно, чтобы UIWebView отображал направления в виде карты (в виде линий на карте), как показано на изображении по ссылке ниже:

Как я хочу, чтобы маршруты отображались (маршруты в виде карты)

Однако, когда этот URL-адрес загружается на iPhone, направления вместо этого отображаются в виде списка (см. ссылку ниже).

Как отображаются маршруты (маршруты в виде списка)

Пользователь должен нажать кнопку карты в верхней панели, чтобы увидеть направления в виде карты.

Как настроить параметры URL-адреса Google Maps таким образом, чтобы маршруты отображались непосредственно в виде карты (а не в виде списка!) в моем приложении для iPhone?


person steak2002    schedule 04.02.2013    source источник
comment
У меня точно такая же проблема. Вы придумали решение этой проблемы?   -  person hoya21    schedule 27.01.2014


Ответы (2)


Это намного проще, если вы используете проект MKMapView.check nvpolyline из github. это поможет вам создать линию между точкой а и точкой б, что решит вашу первую проблему.

И для второй проблемы добавьте этот код в свой проект

NSString* apiUrlStr = [NSString stringWithFormat:@"http://maps.googleapis.com/maps/api/directions/json?origin=%@&destination=%@&sensor=false", saddr, daddr];
    //&alternatives=true

    NSURL* apiUrl = [NSURL URLWithString:apiUrlStr];

    NSString *apiResponse = [NSString stringWithContentsOfURL:apiUrl];

    SBJsonParser *jsonParser = [SBJsonParser new];
    NSDictionary *jsonData = (NSDictionary *) [jsonParser objectWithString:apiResponse error:nil];

    NSLog(@"apiResponse is : %@",jsonData);

    //to display route in drop down

    NSArray *routeArray = [[NSArray alloc]init];
    routeArray= [jsonData objectForKey:@"routes"];

    for(int i=0;i<[routeArray count];i++)
    {
        NSDictionary *tempDictionary = [routeArray objectAtIndex:i];
        if([tempDictionary objectForKey:@"overview_polyline"]!=nil)
        {
            NSDictionary *secTempDictionary = [tempDictionary objectForKey:@"overview_polyline"];
            if([secTempDictionary objectForKey:@"points"]!=nil)
            {
                NSString * routePoint =[secTempDictionary objectForKey:@"points"];

                [routeSetAry addObject:routePoint];

                encodedPoints = [secTempDictionary objectForKey:@"points"];
            }
            // NSLog(@"secTempDictionary is: %@", secTempDictionary);
        } 
        if([tempDictionary objectForKey:@"legs"]!=nil)
        {
            NSArray *lagArray = [[NSArray alloc]init];
            lagArray= [tempDictionary objectForKey:@"legs"];

            for(int i=0;i<[lagArray count];i++)
            {
                NSDictionary *thirdTempDictionary = [lagArray objectAtIndex:i];
                if([thirdTempDictionary objectForKey:@"steps"]!=nil)
                {
                    NSArray *stepsArray = [[NSArray alloc]init];
                    stepsArray= [thirdTempDictionary objectForKey:@"steps"];

                    for(int i=0;i<[stepsArray count];i++)
                    {
                        NSDictionary *forthTempDictionary = [stepsArray objectAtIndex:i];

                        if([forthTempDictionary objectForKey:@"html_instructions"]!=nil)
                        {
                            NSString * directionStr =[forthTempDictionary objectForKey:@"html_instructions"];

                            NSRange range;
                            while ((range = [directionStr rangeOfString:@"<[^>]+>" options:NSRegularExpressionSearch]).location != NSNotFound){
                                directionStr=[directionStr stringByReplacingCharactersInRange:range withString:@""];
                            }
                            [directionStrAry addObject:directionStr];
                        }

                        NSDictionary *fifthTempDictionary = [forthTempDictionary objectForKey:@"polyline"];
                        if([fifthTempDictionary objectForKey:@"points"]!=nil)
                        {
                            NSString * routePoint =[fifthTempDictionary objectForKey:@"points"];

                            [polylineSetAry addObject:routePoint];

                           // encodedPoints = [fifthTempDictionary objectForKey:@"points"];
                        }
                        NSDictionary *sixthTempDictionary =[forthTempDictionary objectForKey:@"distance"];
                        if([sixthTempDictionary objectForKey:@"text"]!=nil)
                        {
                            NSString * distanceStr =[sixthTempDictionary objectForKey:@"text"];

                            [distanceStrAry addObject:distanceStr];

                            // encodedPoints = [fifthTempDictionary objectForKey:@"points"];
                        } 
                    }
                }
            }
        }  
    }

    NSLog(@"routeSetAry is :%@",routeSetAry);
 NSLog(@"polylineSetAry is : %i",polylineSetAry.count);

это даст вам массив строки направления, и вы можете использовать эту строку для отображения в любом месте вашего проекта.

В моем проекте я создал небольшой вид, который отображается наверху карты, и в этом представлении я показываю направление одно за другим.

person Dilip    schedule 04.02.2013
comment
он будет загружать карты Google до iOS 5.0.1. Последняя версия iOS использует данные Apple Maps. - person Saad Masood; 12.11.2013

Я не уверен, но вы должны перейти по этой ссылке, которую Google хорошо объяснил < strong>"Схема URL-адресов Google Maps"

Ты можешь использовать

"comgooglemaps://?saddr=Google+Inc,+8th+Avenue,+New+York,+NY&daddr=John+F.+Kennedy+International+Airport,+Van+Wyck+Expressway,+Jamaica,+New+York&directionsmode = транзит"

который имеет разные параметры, такие как saddr ,daddr ,directionsmode

Надеюсь это поможет!

person Vaibhav Limbani    schedule 01.10.2013