You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

查找Xamarin.Android自定义地图标注可见时触发的GetViewForAnnotation等效方法

实现方案

等效方法说明

Android端Xamarin.Forms.Maps的CustomMapRenderer中,和iOS MapRenderer.GetViewForAnnotation 功能对应的实现分为两部分:

  • 自定义信息窗口样式:使用 GoogleMap.IInfoWindowAdapter 接口,重写 GetInfoWindow(自定义整个信息窗口布局)或 GetInfoContents(仅自定义窗口内容区域)即可实现和iOS端一致的标注视图自定义逻辑,方法会在信息窗口渲染前自动触发
  • 标注可见时自动触发配置:在地图加载完成的MapReady回调、或者标注添加完成的节点,即可对可见区域内的标注执行自定义配置,和iOS端标注变为可见时触发调用的逻辑对齐

默认展开信息窗口实现步骤

你可以直接通过以下代码实现无需点击自动展开信息窗口的需求:

  1. 在Android端的CustomMapRenderer中重写OnMapReady方法,注册信息窗口适配器,同时遍历已添加的标注主动触发信息窗口展示
protected override void OnMapReady(GoogleMap googleMap)
{
    base.OnMapReady(googleMap);
    // 注册自定义信息窗口适配器,对应iOS GetViewForAnnotation的自定义功能
    googleMap.SetInfoWindowAdapter(new CustomInfoWindowAdapter(this));
    
    // 遍历所有标注,默认展开第一个标注的信息窗口,可根据需求调整为你需要的标注
    if (Element.Pins.Any())
    {
        // 获取对应原生Marker对象
        var firstPin = Element.Pins.First();
        var marker = GetMarkerForPin(firstPin);
        // 主动调用展示信息窗口,无需用户点击
        marker?.ShowInfoWindow();
    }
}
  1. 自定义信息窗口适配器示例
public class CustomInfoWindowAdapter : Java.Lang.Object, GoogleMap.IInfoWindowAdapter
{
    private readonly CustomMapRenderer _renderer;

    public CustomInfoWindowAdapter(CustomMapRenderer renderer)
    {
        _renderer = renderer;
    }

    public Android.Views.View GetInfoWindow(Marker marker)
    {
        // 自定义整个信息窗口的布局,返回null则使用默认窗口框架,仅自定义内容走GetInfoContents
        return null;
    }

    public Android.Views.View GetInfoContents(Marker marker)
    {
        // 在这里自定义信息窗口的内容,和iOS GetViewForAnnotation的配置逻辑一致
        var pin = _renderer.Element.Pins.FirstOrDefault(p => p.Label == marker.Title);
        if (pin == null) return null;
        
        // 加载自定义布局,配置内容
        var view = LayoutInflater.From(_renderer.Context).Inflate(Resource.Layout.CustomInfoWindow, null);
        view.FindViewById<TextView>(Resource.Id.TitleText).Text = pin.Label;
        view.FindViewById<TextView>(Resource.Id.DescText).Text = pin.Address;
        return view;
    }
}

内容的提问来源于stack exchange,提问作者Max951

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 11:06:00