Xamarin.android 为映射实现创建包装器类

Xamarin.android 为映射实现创建包装器类,xamarin.android,google-maps-android-api-2,Xamarin.android,Google Maps Android Api 2,我正试图创建一个包装器来保存谷歌和华为地图的实现。 现在我的课程实现了华为和谷歌。 如何分割实现?我有点不知道怎么做 public class Marker { public Android.Gms.Maps.Model.Marker Google { get; set; } public Huawei.Hms.Maps.Model.Marker Huawei { get; set; } Marker(Android.Gms.Maps.Model.Marker go

我正试图创建一个包装器来保存谷歌和华为地图的实现。 现在我的课程实现了华为和谷歌。 如何分割实现?我有点不知道怎么做

public class Marker
{

    public Android.Gms.Maps.Model.Marker Google { get; set; }

    public Huawei.Hms.Maps.Model.Marker Huawei { get; set; }

    Marker(Android.Gms.Maps.Model.Marker google, Huawei.Hms.Maps.Model.Marker huawei)
    {
        Google = google;
        Huawei = huawei;
    }

    public void setPosition(LatLng latLng)
    {
        if (Google != null) Google.Position = latLng.Google;
        if (Huawei != null) Huawei.Position = latLng.Huawei;
    }
...
}

现在我有这种实现。问题是,这为华为和谷歌都树立了一个标志。但我真正想要的是更通用的东西,这样当我做
newmarker()
时,它将自动使用google或huawei,而无需同时设置两者或需要传递两者的实例。

为什么同时使用两个地图?你可以选择其中一个,因为华为的禁令。最新的华为没有谷歌play服务。因此,我需要支持这两种映射简言之,您需要使用:声明抽象类,例如,
AbstractMap
和通用方法声明,并使用它实现应用程序功能。然后,在类
GoogleMapsMap
HuaweiMapsMap
中扩展
AbstractMap
。在应用程序启动时,检查地图的可用性,并将
AbstractMap
实例化为
GoogleMapsMap
或'HuaweiMapsMap'。是的,我最终这样做了