在谷歌地图信息窗口中自动链接文本视图



在Xamarin中,如何让自动链接与Google地图信息窗口中显示的一些TextView一起使用。

这是我custom_info_window XML代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FFFFFF"
    android:orientation="vertical" >
    <TextView
        android:id="@+id/Phone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#000000"
        android:autoLink="phone"/>
    <TextView
        android:id="@+id/Web"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#000000"
        android:autoLink="web"/>
</LinearLayout>

这是我的信息窗口类:

public class InfoWindow : Java.Lang.Object, GoogleMap.IInfoWindowAdapter
{
    public View GetInfoContents(Marker p0)
    {
        var inflater = Application.Context.GetSystemService(Context.LayoutInflaterService) as LayoutInflater;
        View v = inflater.Inflate(Resource.Layout.custom_info_window, null);
        TextView title = (TextView) v.FindViewById(Resource.Id.Phone);
        title.Text = "Phone number: 0800 32 32 32";
        TextView description = (TextView) v.FindViewById(Resource.Id.Web);
        description.Text = "Email address: me@me.com";
        return v;
    }
    public View GetInfoWindow(Marker p0)
    {
        return null;
    }
}

当我单击标记时,我显示 InfoWindow,并且它的格式正确,如 InfoWindow 类中的编码。

但是,当我单击任何一个自动链接项目时,自动链接不起作用。对信息窗口的单击仅注册为整个信息窗口单击,而不会分离到两个不同的文本视图中。

我可以得到一些帮助吗?

提前致谢

由于

一个简单的原因,您无法获得任何想要实现的帮助。 您在InfoWindow中看到的不是您定义的布局,而是从中绘制的图像。 这意味着您尝试对InfoWindow执行的操作是不可能的。

来自谷歌的文档:

注: 绘制的信息窗口不是实时取景。视图在返回时呈现为图像(使用 View.draw(Canvas))。这意味着对视图的任何后续更改都不会反映在地图上的信息窗口中。要稍后更新信息窗口(例如,在加载图像后),请调用 showInfoWindow() 。此外,信息窗口将不遵循普通视图(如触摸或手势事件)的任何典型交互性。但是,您可以在整个信息窗口中收听通用单击事件,如下一节所述。

你不能不使用一些肮脏的黑客。

信息窗口不是实时视图,它只是从您提供的视图生成的图像。因此,任何事件都不会被触发。

但是,如果你真的需要这样做,这是最好的方法:谷歌地图安卓API v2 - 交互式信息窗口(如原始安卓谷歌地图)我自己用过它,它很棒(而且我正在使用 Xamarin)。

例:

这是地图包装器: http://pastebin.com/CDfxVZvi

这是适配器:http://pastebin.com/rHsjxxyn

这是触摸侦听器:http://pastebin.com/4kMTygfE

然后我创建我需要的一切:http://pastebin.com/AGyRTnu4

它比Java复杂一些,因为我们必须在构造函数中传递每个对象。不要忘记在布局中的地图容器周围放置一个 MapWrapper。

在 xml 中试试这个

android:linksClickable="true"

最新更新