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'。是的,我最终这样做了