首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >刷新Android地图加载

刷新Android地图加载
EN

Stack Overflow用户
提问于 2020-01-12 20:27:50
回答 1查看 116关注 0票数 0

我在一个应用程序上工作,其中用户必须发现的地方。我使用它来显示地图上有未发现的地方的区域:https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/custom-renderer/map/circle-map-overlay

但后来,尽管app的功能有所增长,但它不再运行良好。这是我的github的链接。https://github.com/jakuboles/TDKInz2020/tree/master/TDK

在用户登录之后,在TDK.MainPage.xaml.cs.DisplayInMap之前调用TDK.Android.CustomMapRenderer.OnElementChanged函数要快得多,我在其中设置了哪些地方应该显示为已发现,哪些地方应该显示为未发现。在结果中,现在应用程序总是在TDK.Android.CustomMapRenderer.OnElementChanged第36行,位置列表将始终为空,并且在调用OnMapReady来绘制圆圈列表时,列表为空。

当DisplayInMap将地点分配给列表时,有什么方法可以再次调用OnElementChanged吗?或者在DisplayInMap设置list之后,使OnElementChanged运行。

如果这是一个复杂的描述,很抱歉;不知道如何准确地描述。

这是我的Android渲染器:

代码语言:javascript
复制
using Android.Content;
using Android.Gms.Maps.Model;
using Java.Lang;
using MapOverlay;
using MapOverlay.Droid;
using System.Collections.Generic;
using TDK.MapsCustoms;
using Xamarin.Forms;
using Xamarin.Forms.Maps.Android;

[assembly: ExportRenderer(typeof(CustomMap), typeof(CustomMapRenderer))]
namespace MapOverlay.Droid
{
    public class CustomMapRenderer : MapRenderer
    {
        List<CustomCircle> circles;

        public CustomMapRenderer(Context context) : base(context)
        {
        }

        protected override void OnElementChanged(Xamarin.Forms.Platform.Android.ElementChangedEventArgs<Xamarin.Forms.Maps.Map> e)
        {
            base.OnElementChanged(e);



            if (e.OldElement != null)
            {

            }

            if (e.NewElement != null)
            {
                var formsMap = (CustomMap)e.NewElement;
                circles = formsMap.CircleList;
            }
        }

        protected override void OnMapReady(Android.Gms.Maps.GoogleMap map)
        {
            base.OnMapReady(map);

            foreach (var circle in circles)
            {
                var circleOptions = new CircleOptions();
                circleOptions.InvokeCenter(new LatLng(circle.Position.Latitude, circle.Position.Longitude));
                circleOptions.InvokeRadius(circle.Radius);
                circleOptions.InvokeFillColor(0X66FF0000);
                circleOptions.InvokeStrokeColor(0X66FF0000);
                circleOptions.InvokeStrokeWidth(0);

                NativeMap.AddCircle(circleOptions);
            }
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2020-01-14 01:18:42

移动线条

代码语言:javascript
复制
circles = formsMap.CircleList;

OnElementChangedOnMapReady

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59703795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档