Как я могу интегрировать приложение навигатор на устройстве

Как лучше всего использовать такие функции навигации, как планирование маршрута, когда у меня есть адрес в Movelet, и я хочу запустить навигацию через внешнее приложение на iOS, Android и Windwos Phone?

3 ответа

Решение

Чтобы перейти в другое приложение, вам нужна функция Movilizer AppJump, с помощью которой вы можете открыть соединение (Module SPI) и запустить выполнение с использованием команды exec. Вам или пользователю все еще нужно сделать, чтобы запустить навигацию вручную, нажав кнопку "Пуск" в приложении карт.

Для Android-клиента вам нужно использовать протокол с именем geo. Geo дает вам две возможности, вы можете либо ввести конкретные координаты, либо ввести адрес.

Использование определенных координат будет выглядеть так:

'geo:49.483611111111,8.463055555555697?z=18'

Если вы не знаете координаты, вы также можете использовать:

'geo:0,0?q=Wilhelm-Varnholt-Allee 1, 68165 Mannheim?z=18'

В вашем коде это будет выглядеть так:

if(platform == 11)
{
    intentURL = conCat('geo:0,0?q=', destPoint,'?z=18'); 
    conStr = conCat('exec:', intentURL);
}

Для клиента iOS схема URL выглядит очень похоже, но вместо использования geo вам нужно использовать указатель на приложение, которое вы хотите открыть.

'exec:maps://?q=Wilhelm-Varnholt-Allee 1, 68165 Mannheim?z=18'

Использование maps:// откроет приложение Apple Maps, если вы хотите иметь Google Maps, вы должны использовать comgooglemaps://

Я подготовил небольшой пример, который может помочь вам решить вашу проблему:

<question key="#1" type="6" title="Address">
<answer key="#1_0" nextQuestionKey="END" dummyAnswer="true"/>
<onEnterAssignment>

addresses = 
{
    'Diakoniekrankenhaus Mannheim' : 'Speyerer Str. 91, 68163 Mannheim';
    'Moll-Gymnasium' : 'Feldbergstraße 16, 68163 Mannheim';
    'Planetarium Mannheim' : 'Wilhelm-Varnholt-Allee 1, 68165 Mannheim';
    'Karl Benz Stadion' : 'Theodor-Heuss-Anlage 20, 68165 Mannheim';
    'Luisenpark' : 'Theodor-Heuss-Anlage 2, 68165 Mannheim';
    'Mannheim City Airport':'Seckenheimer Landstr.172, 68163 Mannheim';
};

for(dest:addresses)
{
    addAnswer($answer:'#1_0', dest, dest);
}

platform = getClientType();
</onEnterAssignment>  
<onLeaveOkPersistAssignment>
destPoint = addresses[getQuestionValue()];
if(platform == 11)
{
    intentURL = conCat('geo:0,0?q=', destPoint,'?z=18'); 
    conStr = conCat('exec:', intentURL);
}
else
{
    conStr = conCat('exec:maps://?q=', destPoint, '?z=18');

}

conID = connect(conStr, null);

if(isConnectionOpen(conID))
{
    close(conID);
}
</onLeaveOkPersistAssignment>

Для навигации по Android у меня сработало следующее.

intentURL = '%com.google.android.apps.maps%google.navigation:q=Address';
conID = connect(concat('exec:', intentURL), "name");
if (conID ?ge 0) 
{
     close(conID);
}

Address could be: RMZ Eco World Rd, Adarsh Palm Retreat Villas, Bellandur, Bengaluru, Karnataka 560103, India 

Я также нашел другой способ на Android:

addressTxt = "Wenceslas Square, Prague, CZ";
connStr    = concat("exec://", "%com.google.android.apps.maps%", "http://maps.google.com/maps?daddr=", addressTxt);
connection = connect(connStr, "name");
try
{
    close(connection);
}
catch (exception)
{
}

Результат на YouTube

Другие вопросы по тегам