如何在设备上集成导航器应用程序

Posted

技术标签:

【中文标题】如何在设备上集成导航器应用程序【英文标题】:How can I integrate a navigator app on a device 【发布时间】:2015-08-04 02:40:45 【问题描述】:

当我的 Movelet 中有地址并想通过 iosandroid 和 Windwos Phone 上的外部应用程序触发导航时,使用路线规划等导航功能的最佳方法是什么?

【问题讨论】:

【参考方案1】:

要跳转到另一个应用程序,您需要 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 方案看起来非常相似,但不是使用地理,而是需要使用指向要打开的应用程序。

'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>

【讨论】:

很好的答案!真的有帮助。任何线索在win手机上看起来如何? ;)【参考方案2】:

我还在 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)


Result on YouTube

【讨论】:

【参考方案3】:

对于 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 

【讨论】:

以上是关于如何在设备上集成导航器应用程序的主要内容,如果未能解决你的问题,请参考以下文章

在ios设备上集成phonegap inapp购买插件时出错

如何在 Xamarin.Android 应用上集成新的 Google 登录?

如何在使用 Typescript 的 Ionic App 上集成 API.AI?

在 NativeScript App 上集成 Android 服务

如何在JQuery数据库CellEdit上集成Select2插件?

在角度通用应用程序(nodejs)上集成newrelic