Ejemplo n.º 1
0
        private async Task SetMarkerListeners()
        {
            if (_listeningLoneMarkerKeys == null)
            {
                _listeningLoneMarkerKeys = new List <string>();
            }

            //use GetMappedValue<T> to map and extract the array of guid keys of unclustered markers
            GoogleMapsComponents.JsObjectRef jsRef = new GoogleMapsComponents.JsObjectRef(JsObjectRef, _markerClustering.Guid);
            var guidStrings = (await jsRef.GetMappedValue <List <string> >("clusters", "marker", "guidString"))
                              .Where((x) => { return(x != null); });

            if (!guidStrings.Any())
            {
                return;
            }

            // Among markers not in clusters, find those which don't yet have a listener
            MarkerList deafLoneMarkersList = await MarkerList.CreateAsync(JsObjectRef, new Dictionary <string, MarkerOptions>());

            foreach (var key in guidStrings)
            {
                var markr = markers.First(x => key == x.Guid.ToString());
                if (_listeningLoneMarkerKeys.Contains(key))
                {
                    continue;
                }
                deafLoneMarkersList.BaseListableEntities.Add(key, markr);
                _listeningLoneMarkerKeys.Add(key);
            }

            if (!deafLoneMarkersList.BaseListableEntities.Any())
            {
                return;
            }

            await deafLoneMarkersList.AddListeners <MouseEvent>(deafLoneMarkersList.Markers.Keys.ToList(), "click", async (o, e) =>
            {
                //await JsObjectRef.InvokeVoidAsync("loneMarkerClickEvent", e);
            });

            // if all points set, clean up idle listener.
            if (_listeningLoneMarkerKeys.Count == markers.Count)
            {
                _listeningLoneMarkerKeys = null;
                await _markerClustering.ClearListeners("clusteringend");
            }
        }
Ejemplo n.º 2
0
        public async static Task <JsObjectRef> CreateAsync(
            IJSRuntime jsRuntime,
            Guid guid,
            string functionName,
            params object[] args)
        {
            var jsObjectRef = new JsObjectRef(jsRuntime, guid);

            await jsRuntime.MyInvokeAsync <object>(
                "googleMapsObjectManager.createObject",
                new object[] { guid.ToString(), functionName }
                .Concat(args).ToArray()
                );

            return(jsObjectRef);
        }