xamarin.forms - 如何使用 Xamarin.Forms.Maps(无 Xamarin.Forms.GoogleMaps)在地图中应用样式或更改颜色
问题描述
正如我在标题中所写,我使用 Microsoft Xamarin.Forms.Maps 块在我的应用程序中显示地图。首先我从 Xamarin.Forms.GoogleMaps 开始,但是当我看到我无法自定义 InfoWindows(当我触摸一个引脚时)时,我必须返回并开始使用 Xamarin.Forms.Maps。唯一的问题是我必须将“灰色样式”应用于地图或类似的东西。而且我找不到任何链接或指南来做到这一点。似乎 CustomRender 无法修改样式或颜色。
请问,有人可以帮我吗?任何链接、文档或示例?
解决方案
如果您指的是Dark Mode
您可以创建自定义渲染器来实现这一点。
iOS
设置OverrideUserInterfaceStyle
在OnElementChanged
.
[assembly: ExportRenderer(typeof(Map), typeof(MyRenderer))]
namespace FormsApp.iOS
{
class MyRenderer : MapRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<View> e)
{
base.OnElementChanged(e);
if (e.NewElement != null)
{
var nativeMap = Control as MKMapView;
nativeMap.OverrideUserInterfaceStyle = UIUserInterfaceStyle.Dark;
}
}
}
}
安卓
在资源中创建一个暗模式文件并设置mapStyle
在OnElementChanged
.
[assembly: ExportRenderer(typeof(Map), typeof(MyMapRenderer))]
namespace FormsApp.Droid
{
class MyMapRenderer : MapRenderer
{
Context _context;
public MyMapRenderer(Context context) : base(context)
{
_context = context;
}
protected override void OnElementChanged(ElementChangedEventArgs<Map> e)
{
base.OnElementChanged(e);
if(e.NewElement != null)
{
NativeMap.SetMapStyle(MapStyleOptions.LoadRawResourceStyle(this.Context, Resource.Raw.map_style_night));
}
}
}
}
参考
https://forums.xamarin.com/discussion/comment/429548/#Comment_429548。
推荐阅读
- groovy - Groovy:在闭包中使用“it”
- flutter - Concat 3个文本字段形成生日
- nfc - 使用 IDTronic Evo HF 或 ACS ACR1252U 读取仿真 NFC 标签 (pn71501)
- python - python re.sub 没有替换所有出现的字符串
- wordpress - 从 PWA 中删除不需要的页面
- javascript - 在反应中附加输入类型=“文件”与按钮
- reactjs - 使用 react-native-pdf 在 react-native 上获取准确的 x 和 y 坐标
- javascript - 时差一小时的时间范围
- c++ - OpenGL 不会使用 Shaders Mac 渲染
- http - 使用 PoolingHttpClientConnectionManager 和 CloseableHttpClient 发送空闲连接的保持活动请求