从javascript打开原生地图应用程序,而不依赖于经度和纬度坐标

ale*_*dru 10 javascript cordova

嗨,我正在寻找一种从phonegap包装的JavaScript应用程序打开应用程序的本机地图应用程序的方法.

到目前为止,我的研究表明,对于Android,我将不得不使用以下格式的链接:

<a href="geo:38.897096,-77.036545">Geolocation Test</a>
Run Code Online (Sandbox Code Playgroud)

这是有问题的,因为我将不得不使用外部服务将地址转换为经度和格度坐标,如果可能的话我想避免这种情况.

在iOS的情况下,这很简单.我只需要以这种格式给它一个链接:

<a href="maps:q=Bacau">Test 2</a>
Run Code Online (Sandbox Code Playgroud)

原生地图应用程序得到了支持.

有没有办法,类似于iOS中的那个,Android为它提供了一个特定格式的地址的简单链接,设备将知道打开它的原生地图应用程序?

Dav*_*den 14

查看Android意图列表,应该可以使用URI空间中的q参数geo:.

试试这个:

<a href="geo:0,0?q=Bacau">Test</a>
Run Code Online (Sandbox Code Playgroud)


del*_*ant 10

Cordova 3.6.0引入了第二个白名单,用于限制允许哪些URL启动外部应用程序.在以前版本的Cordova中,所有非http URL(例如mailto:,geo:,sms:和intent)都被隐式允许作为标记的目标.由于应用程序可能泄露信息,如果XSS漏洞允许攻击者构建任意链接,则这些URL也必须列入白名单,从Cordova 3.6.0开始.

Cordova 3.6.0白名单指南

所以你需要在config.xml中显式添加:

  <access origin="tel:*" launch-external="yes" />
  <access origin="mailto:*" launch-external="yes" />
Run Code Online (Sandbox Code Playgroud)