如何在 Xamarin Google 地图中的标记上设置特定图标

How can I set an specific Icon on a Marker in Xamarin GoogleMaps

我会创建一个 Android 应用程序,我可以在其中显示地理数据和其他内容。 我实现了 Android.Gms.Maps 并将标记的默认 ping 图标更改为一个点。

我尝试了不同的方法,但没有任何效果...请帮助我!

尝试 1:(从路径打开 bmp 图标)

_myPositionMarker = _map.AddMarker(new MarkerOptions()
        .SetPosition(new LatLng(34.8094, 12.7484))
        .SetTitle("Actual Position")
        .SetIcon(BitmapDescriptorFactory.FromPath("C:\Users\my.name\source\repos\repo\appName\Resources\drawable\dot.bmp")));

错误信息:图片解码失败,必须是位图

尝试 2:(我已将 bmp 文件包含为嵌入资源)

_myPositionMarker = _map.AddMarker(new MarkerOptions()
        .SetPosition(new LatLng(34.8094, 12.7484))
        .SetTitle("Actual Position")
        .SetIcon(BitmapDescriptorFactory.FromResource(Resource.Drawable.dot)));

错误消息:应用程序未编译但未显示失败

尝试 3:(也作为资源)

var markerImg = BitmapDescriptorFactory.FromResource(Resource.Drawable.dot);

_myPositionMarker = _map.AddMarker(new MarkerOptions()
       .SetPosition(new LatLng(34.8094, 12.7484))
       .SetTitle("Actual Position")
       .SetIcon(markerImg));

错误消息:应用程序未编译但未显示失败

没有任何效果!我不知道如何解决这个问题:-/

确定...

_myPositionMarker = _map.AddMarker(new MarkerOptions()
        .SetPosition(new LatLng(24.8094, 12.7484))
        .SetTitle("Actual Position")

...正确显示默认标记并且应用运行良好

感谢您的帮助!

尝试 1 不会成功,因为该路径未指向设备本身的路径。

只要 Drawable 不是 VectorDrawable 或基于 XML 的 drawable,尝试 2 和 3 应该可以工作。它需要是 jpg 或 png。 这些也不能是嵌入式资源,但必须是 Android 资源,因此它们需要位于适当的 Resources 文件夹中,并且 Build Action 设置为 AndroidResource.

还要确保在调用地图就绪回调后添加标记。