用于打开原生Android或IOS地图的HTML链接,显示越野地标

时间:2013-11-08 22:52:44

标签: android ios google-maps google-maps-api-3

我的网络应用程序显示带有地标的Google地图,显示越野位置。我正在将其转换为在移动设备上运行。

我可以使用以下PHP代码和链接在IOS和Android中成功打开本机地图应用程序。 (在运行Android 4.1.2的三星Galaxy S2上测试过):

$latlong ='-28.546604,153.540777';
echo '<a href="http://maps.apple.com?daddr='.$latlong.'">Take Me There</a>';

问题是它没有在显示越野位置的原生谷歌地图上放置任何地标。它只显示行驶路线,终点在最近的街道。无论是单击底部的导航还是方向选项,结果都相同。

我也使用像这样的直接(仅限Android)链接进行了测试,但没有区别:

<a href="http://maps.google.com/maps?daddr='.$latlong.'">

我尝试了这种形式的链接:

<a href="geo:'.$latlong.'">Take Me There</a>

它直接进入谷歌地图本机而不询问任何关于使用哪个应用程序的初步问题,我更喜欢,但它只显示一个空白的地图屏幕。如果我点击地图右上角的图标,它会显示正常的导航屏幕,但会以我当前的位置为中心,而且我的目的地没有地标。

有没有办法强制原生应用在指定的越野拉/长位置显示地标?

自己找到答案。由于this stackoverflow answer

,解决方案非常简单

事实上,我在PC上显示Google地图的旧代码正是这样做的。 (Doh!)只需在latlong之后添加(标签)值即可显示地标。像这样:

$dest = 'my destination';
$latlong ='-28.546604,153.540777';
echo '<a href="http://maps.apple.com?daddr='.$latlong.'('.$dest.')">Take Me There</a>';

在Android 4.1.2上测试并运行良好(即使链接指向Apple,它也足够智能使用谷歌地图应用程序。我认为它也适用于Apple。

1 个答案:

答案 0 :(得分:0)

function myNavFunc(){
    // If it's an iPhone..
    if( (navigator.platform.indexOf("iPhone") != -1) 
        || (navigator.platform.indexOf("iPod") != -1)
        || (navigator.platform.indexOf("iPad") != -1))
         window.open("maps://maps.google.com/maps?daddr=lat,long&amp;ll=");
    else
         window.open("http://maps.google.com/maps?daddr=lat,long&amp;ll=");
}
<a style="cursor: pointer;" onclick="myNavFunc()">Take me there!</a>