Форум программистов, компьютерный форум CyberForum.ru

Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Pro2005
44 / 44 / 3
Регистрация: 27.05.2013
Сообщений: 163
#1

MapKit построение маршрута - Программирование iOS

16.08.2013, 11:05. Просмотров 1490. Ответов 2
Метки нет (Все метки)

Hi, подскажите возможно как-то прикрутить построение маршрутов ?
Я пробывал исп google для получения координат, но при выводе маршрута он был не точен (чем больше расстояние - тем меньше точность).

Добавлено через 30 минут
Сам задал, сам ответил....
Проблема заключалась в том что когда я парсил результат от google directions
Пример одного из step:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
distance =                             {
                                text = "87 m";
                                value = 87;
                            };
                            duration =                             {
                                text = "1 min";
                                value = 12;
                            };
                            "end_location" =                             {
                                lat = "47.9910939";
                                lng = "37.7981615";
                            };
                            "html_instructions" = "Continue onto <b>\U043f\U0440\U043e\U0441\U043f. \U041f\U0430\U0432\U0448\U0438\U0445 \U041a\U043e\U043c\U043c\U0443\U043d\U0430\U0440\U043e\U0432/\U043f\U0440\U043e\U0441\U043f. \U041f\U043e\U043b\U0435\U0433\U043b\U0438\U0445 \U041a\U043e\U043c\U0443\U043d\U0430\U0440\U0456\U0432</b>";
                            polyline =                             {
                                points = "af|cHofueF[qBI{@Aq@";
                            };
                            "start_location" =                             {
                                lat = "47.990894";
                                lng = "37.797035";
                            };
                            "travel_mode" = DRIVING;
я брал координаты точек из end_location и start_location... точек выдавало довольно мало - маршрут был ОЧЕНЬ не точен и "съезжал" с дорог. Для более точного построения маршрутов требуется использовать значения polyline. Для декодирования исп готовую категорию

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
@implementation MKPolyline (MKPolyline_EncodedString)
 
+ (MKPolyline *)polylineWithEncodedString:(NSString *)encodedString {
    const char *bytes = [encodedString UTF8String];
    NSUInteger length = [encodedString lengthOfBytesUsingEncoding:NSUTF8StringEncoding];
    NSUInteger idx = 0;
 
    NSUInteger count = length / 4;
    CLLocationCoordinate2D *coords = calloc(count, sizeof(CLLocationCoordinate2D));
    NSUInteger coordIdx = 0;
 
    float latitude = 0;
    float longitude = 0;
    while (idx < length) {
        char byte = 0;
        int res = 0;
        char shift = 0;
 
        do {
            byte = bytes[idx++] - 63;
            res |= (byte & 0x1F) << shift;
            shift += 5;
        } while (byte >= 0x20);
 
        float deltaLat = ((res & 1) ? ~(res >> 1) : (res >> 1));
        latitude += deltaLat;
 
        shift = 0;
        res = 0;
 
        do {
            byte = bytes[idx++] - 0x3F;
            res |= (byte & 0x1F) << shift;
            shift += 5;
        } while (byte >= 0x20);
 
        float deltaLon = ((res & 1) ? ~(res >> 1) : (res >> 1));
        longitude += deltaLon;
 
        float finalLat = latitude * 1E-5;
        float finalLon = longitude * 1E-5;
 
        CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(finalLat, finalLon);
        coords[coordIdx++] = coord;
 
        if (coordIdx == count) {
            NSUInteger newCount = count + 10;
            coords = realloc(coords, newCount * sizeof(CLLocationCoordinate2D));
            count = newCount;
        }
    }
 
    MKPolyline *polyline = [MKPolyline polylineWithCoordinates:coords count:coordIdx];
    free(coords);
 
    return polyline;
}
 
@end
Может кому нибудь поможет...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.08.2013, 11:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос MapKit построение маршрута (Программирование iOS):

Замена стандартных визуальных элементов в MapKit - Swift
Здравствуй, киберфорум. Создал небольшое приложение с использованием MapKit, оно находит мое местоположение, запоминает маршрут, но не...

MapKit не отображает локацию - Objective-C
Всем привет! - (void)viewWillAppear:(BOOL)animated { ; // Координаты точки на карте CLLocationCoordinate2D...

MapKit и интеграцией проектов с github - Objective-C
Бью уже долго над этим, пытался сам разобраться, но тяжко идет Вопрос 1: Как использовать google map на iOS 6? В 6 версии аппл перешла...

Яндекс Карты API Построение маршрута - JavaScript
Есть координаты допустим в бд, да где угодно к примеру 55.75399400, 37.62209300; 59.82270019, 30.39442990; Нужно...

Автоматическое построение маршрута канала - MS Access
Если создавать отдельные таблицы на каждый узел и указывать связь между ними в структуре данных вручную, то схема получается нечитаемой и...

Яндекс API. Построение маршрута - JavaScript
Все доброго времени суток! Подскажите, пожалуйста, как мне проложить пройденный маршрут на яндекс картах? Просто уже много пробовал и...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
КОЗАК СЕРГІЙ
4 / 4 / 1
Регистрация: 16.10.2009
Сообщений: 38
18.08.2013, 18:08 #2
А как ты будешь бороться с тем чтоб проложить маршрут на картах ? Ведь в предидущем твоем случае ти использовал наверное iOS версию не выше 6,0. А в 6,0 уже идут новые карти, и координати по гуг карте и айос карте отличаются, не намного, но все же есть... Что в этом случае?
Pro2005
44 / 44 / 3
Регистрация: 27.05.2013
Сообщений: 163
19.08.2013, 14:14  [ТС] #3
протестил... работает как на iOS 5 так и на iOS6

Добавлено через 1 минуту
маршрут вывожу исп MKPolyline и MKPolylineView

Добавлено через 1 минуту
Цитата Сообщение от КОЗАК СЕРГІЙ Посмотреть сообщение
координати по гуг карте и айос карте отличаются, не намного, но все же есть
маршрут по основным дорогам строится отлично... пока явных багов не заметил...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.08.2013, 14:14
Привет! Вот еще темы с ответами:

По введенному номеру маршрута вывести на печать вид транспорта, начальный и конечный пункт маршрута - Turbo Pascal
Написать программу по созданию файла записей, содержащих сведения согласно условию задачи: Номер маршрута, вид транспорта, начальный...

Yandex mapkit и другие - Программирование Android
Здравствуйте. Нужно встроить в приложение карту для наглядного местоположения какого либо объекта, зная его координаты (карта должна быть...

Yandex MapKit на Android Studio - Программирование Android
Здравствуйте, импортировал библиотеку карт в проект, на эмуляторе все отлично работает, но на реальном телефоне вылетает. Пробовал менять...

Yandex mapkit узнать координаты адреса - Программирование Android
Доброго времени суток. Только начал работать с yandex map kit и не могу найти ответа на вопрос как по адресу узнать координаты? Нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru