需要新的方法来链接到移动Web应用程序的本机映射

时间:2012-09-20 03:34:41

标签: android iphone mobile mobile-website ios6

我的移动网络应用使用地图链接,只需链接到“maps.google.com/maps?q=[something]”即可自动启动Android或iPhone的地图功能。 iOs 6出来了,链接停止工作,因为Apple希望我们使用“maps。 APPLE .com”。所以现在我必须专门检测iOs 6并换掉链接。

是否有一种干净的方法可以从适用于Android,iOs 6和iOs 6之前的移动网络应用程序打开设备/原生地图应用程序,因为iOs 6对它进行了监视?

结果发送给“maps.apple.com”的任何内容都会转发到“maps.google.com”!

这两个链接都转到同一个地方

http://maps.google.com/maps?q=New+York

http://maps.apple.com/maps?q=New+York

Apple dev网站上最近更新的文档... http://developer.apple.com/library/ios/#featuredarticles/iPhoneURLScheme_Reference/Articles/MapLinks.html#//apple_ref/doc/uid/TP40007894-SW1

2 个答案:

答案 0 :(得分:1)

我在我的iPhone上尝试了这个,而maps.apple.com确实启动了新的Apple Maps应用程序(但我只在地址栏中输入了它)。当我使用Chrome在我的iMac上关注相同的链接时,我被重定向到maps.google.com。我相信这是Apple的故意。如果您使用iOS 6定位iPhone,则需要从google.com切换到apple.com。它应该是无缝的。

[确认 - 这适用于我的iOS版iPhone 6.0 - 我不再使用iOS 5.x设备来确认这是在以前版本的iOS上重定向。它确实在Safari中进行了重定向,但它在iPhone模拟器中被破坏了]

// javascript snippet to detect ipad/iphone OS version - these are notoriously fragile, use at your own risk :)
function getOsVersion() {
var osVersion = window.navigator.userAgent.match(/(ipad|iphone);\s+cpu\s.*os\s+([_0-9]+)/i);
if (osVersion && osVersion.length === 3) {
    return Number(osVersion[2].replace('_', '.'));
}

return 0;

}

答案 1 :(得分:-1)

在Android中,您可以使用这些Intent URI:

geo:latitude,longitude
geo:latitude,longitude?z=zoom
geo:0,0?q=my+street+address
geo:0,0?q=business+near+city

例如:

String uri = "geo:37.167629,-121.222478";
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri) );
startActivity(intent);