向 Xamarin 地图添加标签
Adding Labels to Xamarin map
我想在我的地图上添加标签。
我在映射果园的地图上有一堆多边形(使用带有 Android 和 iOS 自定义渲染的 Xamarin 表单),我想为每个多边形添加一些带有详细信息的标签。我已经尝试了以下方法,您可以在其中使用用作标记的文本制作自定义图钉,但这并不理想,因为我希望每行都有几行文本并且不需要它可点击。我还需要它在 iOS 和 Android.
中工作
如有任何帮助,我们将不胜感激。
public Marker AddText(Context context, GoogleMap map, LatLng location, string text, int fontSize, Polygon polygon)
{
try
{
if (text == null)
throw new ArgumentNullException(nameof(text));
if (location == null)
throw new ArgumentNullException(nameof(location));
if (map == null)
throw new ArgumentNullException(nameof(map));
if (context == null)
throw new ArgumentNullException(nameof(context));
if (fontSize <= 0)
throw new ArgumentOutOfRangeException(nameof(fontSize));
var textView = new TextView(context);
textView.Text = text;
textView.TextSize = fontSize;
var paintText = textView.Paint;
var boundsText = new Rect();
paintText.GetTextBounds(text, 0, textView.Length(), boundsText);
paintText.TextAlign = Paint.Align.Center;
paintText.Color = Android.Graphics.Color.White;
paintText.FakeBoldText = true;
var bmpText = Bitmap.CreateBitmap(boundsText.Width() + 10, boundsText.Height(), Bitmap.Config.Argb8888);
var canvasText = new Canvas(bmpText);
canvasText.DrawText(text, canvasText.Width / 2, canvasText.Height - boundsText.Bottom, paintText);
var markerOptions = new MarkerOptions();
markerOptions.SetPosition(location);
markerOptions.SetIcon(BitmapDescriptorFactory.FromBitmap(bmpText));
markerOptions.Anchor(0.5f, 0.5f);
//markerOptions.SetTitle(text);
Marker marker = map.AddMarker(markerOptions);
Constants.markerPolygons.Add(markerOptions.Position.ToString(), polygon);
lstText.Add(marker);
return marker;
}
我想您正在寻找的是 SkiaSharp。
https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/graphics/skiasharp/
我还建议您考虑 Xamarin.Forms.GoogleMaps 多个多边形
https://github.com/amay077/Xamarin.Forms.GoogleMaps
我想在我的地图上添加标签。 我在映射果园的地图上有一堆多边形(使用带有 Android 和 iOS 自定义渲染的 Xamarin 表单),我想为每个多边形添加一些带有详细信息的标签。我已经尝试了以下方法,您可以在其中使用用作标记的文本制作自定义图钉,但这并不理想,因为我希望每行都有几行文本并且不需要它可点击。我还需要它在 iOS 和 Android.
中工作如有任何帮助,我们将不胜感激。
public Marker AddText(Context context, GoogleMap map, LatLng location, string text, int fontSize, Polygon polygon)
{
try
{
if (text == null)
throw new ArgumentNullException(nameof(text));
if (location == null)
throw new ArgumentNullException(nameof(location));
if (map == null)
throw new ArgumentNullException(nameof(map));
if (context == null)
throw new ArgumentNullException(nameof(context));
if (fontSize <= 0)
throw new ArgumentOutOfRangeException(nameof(fontSize));
var textView = new TextView(context);
textView.Text = text;
textView.TextSize = fontSize;
var paintText = textView.Paint;
var boundsText = new Rect();
paintText.GetTextBounds(text, 0, textView.Length(), boundsText);
paintText.TextAlign = Paint.Align.Center;
paintText.Color = Android.Graphics.Color.White;
paintText.FakeBoldText = true;
var bmpText = Bitmap.CreateBitmap(boundsText.Width() + 10, boundsText.Height(), Bitmap.Config.Argb8888);
var canvasText = new Canvas(bmpText);
canvasText.DrawText(text, canvasText.Width / 2, canvasText.Height - boundsText.Bottom, paintText);
var markerOptions = new MarkerOptions();
markerOptions.SetPosition(location);
markerOptions.SetIcon(BitmapDescriptorFactory.FromBitmap(bmpText));
markerOptions.Anchor(0.5f, 0.5f);
//markerOptions.SetTitle(text);
Marker marker = map.AddMarker(markerOptions);
Constants.markerPolygons.Add(markerOptions.Position.ToString(), polygon);
lstText.Add(marker);
return marker;
}
我想您正在寻找的是 SkiaSharp。 https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/graphics/skiasharp/
我还建议您考虑 Xamarin.Forms.GoogleMaps 多个多边形 https://github.com/amay077/Xamarin.Forms.GoogleMaps