Android 谷歌地图7.0.0与位置的意图

Android 谷歌地图7.0.0与位置的意图,android,google-maps,geolocation,geo-schema,Android,Google Maps,Geolocation,Geo Schema,起初,我知道关于StackOverflow有几个类似的问题。目前,我使用geo方案来寻址其他应用程序可以处理的点 就像在例子中的那样,顺便说一句,它似乎已经过时了RFC了!我试着用这样的方法: geo:50.95144,6.98725?q=50.95144,6.98725%20(Disneyland) 所以我得到了一个意向选择器,在那里我可以选择一个应用程序,它显示了我在谷歌地图迪斯尼乐园的例子,上面有一个标记。现在似乎安装了一个更新,删除了该支持。我刚得到消息说这个地方找不到 我试图理解定义

起初,我知道关于StackOverflow有几个类似的问题。目前,我使用geo方案来寻址其他应用程序可以处理的点

就像在例子中的那样,顺便说一句,它似乎已经过时了RFC了!我试着用这样的方法:

geo:50.95144,6.98725?q=50.95144,6.98725%20(Disneyland)
所以我得到了一个意向选择器,在那里我可以选择一个应用程序,它显示了我在谷歌地图迪斯尼乐园的例子,上面有一个标记。现在似乎安装了一个更新,删除了该支持。我刚得到消息说这个地方找不到

我试图理解定义“geo”URI方案的规则。我不完全明白。完全不可能定义标签,这是正确的吗

我现在如何将位置链接到谷歌地图

就像Android文档中的例子一样,RFC似乎已经过时了!我试着用这样的东西

文件中的四个示例结构为:

geo:latitude,longitude
geo:latitude,longitude?z=zoom
geo:0,0?q=my+street+address
geo:0,0?q=business+near+city
您将注意到,所有这些都没有一个标签放在括号中,由一个空格与Uri的其余部分隔开

现在似乎安装了一个更新,删除了该支持

这种支持,如果它以前存在的话,是没有文档记录的,你不应该依赖它。您还将注意到,Android有许多映射应用程序,用户可以选择其中任何一个作为geo:Intent-您是否测试了所有这些应用程序,以查看您的未记录功能是否在所有这些应用程序上都起作用

完全不可能定义标签,这是正确的吗

我没有在RFC中看到任何关于括号内标签语法的证据。虽然,我同意,这些IETF RFC往往难以阅读

我现在如何将位置链接到谷歌地图

将标签放在括号中:

geo:50.95144,6.98725?q=50.95144,6.98725
既然你不需要这个?如果您不再使用该部分,您可以使用:

geo:50.95144,6.98725
如果你真正的问题是我现在如何将一个位置链接到谷歌地图并让它显示我自己的标签,那么你可能不能


欢迎您将地图引擎嵌入到应用程序中,例如谷歌的Android地图V2,在这种情况下,您可以将地图标记到该引擎API的极限。我希望任何严肃的映射引擎都能支持添加带有某种标签的标记。

WhatsApp的目的是:

启动u0{act=android.intent.action.VIEW cat=[android.intent.category.BROWSABLE] dat= flg=0x3000000 cmp=com.android.browser/.BrowserActivity有额外功能} 来自pid 2115

因此,如果您使用以下意图URI:

字符串geoUri=http://maps.google.com/maps?q=loc: +lat+,+lng++mTitle+


…它的行为应该像WhatsApp一样。此外,似乎其他一些地理应用程序也会触发这一意图。但它并不适用于所有地理应用程序

这是在我的Nexus 4上测试的最新Google Maps v7.1

    public static void launchGoogleMaps(Context context, double latitude, double longitude, String label) {
        String format = "geo:0,0?q=" + Double.toString(latitude) + "," + Double.toString(longitude) + "(" + label + ")";
        Uri uri = Uri.parse(format); 
        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        context.startActivity(intent);
}

顺便说一句,我说的是谷歌地图7.0.0 700002512,我不知道为什么它只出现在Nexus 7上。使用新的地图应用程序,我的N4上也是如此。他们不再寻找确切的地理位置。您只需获得谷歌知道的下一个地址:它变得更好了:webapp现在知道了诸如Disneyland@50.95144,6.98725. Android应用程序可以在野外共享标记时创建这些查询。但它本身无法解析这些查询..:@我在S3、S4和HTC one上也检查了它。adb shell am start-a android.intent.action.VIEW-n com.google.android.apps.Maps/com.google.android.Maps.MapsActivity-d geo:6.88,79.91?q=6.88,79.91 foo正在为我工作。今天更新的Maps 7.2.0.AFIK WhatsApp也使用了一些意图,直接用指针和标签打开Google Maps。我可以想象如何强制打开谷歌地图,但我不知道如何强制打开标签。我更喜欢一些语法,例如导航软件可以导航到这一点。@rekire:WhatsApp使用了一些意图,直接用指针和标签打开谷歌地图——如果是真的,WhatsApp开发者讨厌他们的用户,因为不是所有的用户都想使用谷歌地图,即使谷歌地图安装在设备上。任何明智的开发者都不应该强行打开谷歌地图。我完全同意你的看法。我不想将我的应用程序绑定到谷歌地图。我只是想知道他们是如何强制标签工作的。@rekire:我假设WhatsApp的行为在你的Nexus7上没有改变,这表明他们正在做一些与你不一样的事情。由于WhatsApp是一个大品牌,他们可能与谷歌有一些直接联系。可以想象的是,谷歌告诉他们关于这个标签的一些未记录的东西,允许他们继续使用它,即使你使用的伎俩现在可能被打破了。WhatsApp仍将面临风险,因为无法保证谷歌会继续维护WhatsApp使用的任何钩子。@rekire您可以使用以下工具嗅探意图:似乎您
他们修复了那个错误。奇怪的是,我使用的是Maps7.2,而且最短的时间内它不起作用。很抱歉回答得太晚…有一个带有小数点的错误。这个技巧只适用于以点作为小数分隔符的区域设置。对于使用逗号作为小数分隔符的区域设置,点被逗号替换,这将导致无效URL。但是这个错误在v7.2中已经修复了,所以它现在应该可以在每个语言环境中使用。