自动链接映射(autolink:map)是如何工作的?

7

我正在使用TextView的android:autoLink="map"属性来进入地图并查找与该textview相关联的地址。

但是它的行为很奇怪,只能找到一些地址。这是我正在尝试的代码:

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
    <TextView
        android:id="@+id/textViewautoLink"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/autolinktext"
        android:autoLink="map"></TextView>
</LinearLayout>

这是我的strings.xml文件。
strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="autolinktext">1600 Amphitheatre Parkway, Mountain View, CA 94043 </string>
</resources>

问题是:
假设我写上面的字符串,即1600 Amphitheatre Parkway, Mountain View, CA 94043,那么它工作得很好,textView变成蓝色,当我点击它时,它会在地图上搜索地址。
当我将此地址更改为:1600 Amphitheatre Parkway, Mumbai, IN,它仍然显示相同的内容,并尝试搜索地址,但由于地址错误,无法找到。这没关系。
但是当我写其他地址时,例如:600 Band Stand, Mumbai, IN,则:
1)textview不是蓝色 2)它似乎不能点击 3)由于它不能点击,所以找不到地址。
我正在搜索谷歌,但没有找到任何原因来解释这种行为。 我还想知道:
是否有编写此地图地址的格式? 另外,Android如何通过只在字符串中编写地址(我已经按相同的格式编写了相同的地址,只是更改了字符串),就知道地址是否有效?
请帮忙。
1个回答

9
以下是从匹配器中提取的注释:
  1. 查找街道号码的1-5位数字(不支持“One Microsoft Way”)
  2. 忽略以“#”,Suite,Ste,Rm开头的内容
  3. 查找两个或更多单词(最多5个?North Frank Lloyd Wright Blvd)
    注意:“North Hills St.上的The Circle”有六个单词和一个较小的“at”——允许使用at、by、of、in、the和、...?
  4. 如果一个单词以小写字母开头,则不匹配
    允许:, . - # /(表示1/2)' "
  5. 查找一个或两个分隔符,以表示可能的第二个地址行和城市名称
    查找完整的州名或州的两个字母,和/或邮政编码(5或9位数字)
  6. 现在查找街道后缀,可以是全称或缩写形式,如果有星号,则可选's'
来源:CacheBuilder.cpp。您可以在webviewcore的CacheBuilder :: FindPartialAddress中查看确切的算法。
据我所见,仅匹配以LleY,NneX,RCade,VE新航路,LAMEDA,aYoU等结尾的街道名称。在您的情况下,Band stand与在美国常见的街道名称结尾不匹配。

谢谢回复...你的意思是说我必须按照美国地址结构编写地址,因为其他国家的街道名称不同,并且并非每个国家都有街道编号。 - Maverick
谢谢您的时间,Nandeesh...我只是想知道您从哪里得到了上面的信息(即您的答案)...您能给我一个链接吗? - Maverick
1
查找地址是从Webview中完成的。因此,您需要Android代码。您可以在此处查看cachebuilder.cpp http://bit.ly/zcY1q2。FindPartialAddress是函数名称。longstreetnames是用于匹配街道结尾字母的数组。 - nandeesh
谢谢Nandeesh,非常好。 - Maverick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接