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
        private async Task AddMarkersGroup(IEnumerable <LatLngLiteral> coordinates)
        {
            if (_markerList == null)
            {
                _markerList = await MarkerList.CreateAsync(
                    map1.JsRuntime,
                    coordinates.ToDictionary(s => Guid.NewGuid().ToString(), y => new MarkerOptions()
                {
                    Position = new LatLngLiteral()
                    {
                        Lng = y.Lng, Lat = y.Lat
                    },
                    Map = map1.InteropObject,
                    //Icon = new Icon() { Url = s.MarkerIconPath, ScaledSize = iconSize, Anchor = iconAnchor },
                    Clickable = true,
                    Title     = Guid.NewGuid().ToString(),
                    Visible   = true
                })
                    );
            }
            else
            {
                var cordDic = coordinates.ToDictionary(s => Guid.NewGuid().ToString(), y => new MarkerOptions()
                {
                    Position = new LatLngLiteral()
                    {
                        Lng = y.Lng, Lat = y.Lat
                    },
                    Map = map1.InteropObject,
                    //Icon = new Icon() { Url = s.MarkerIconPath, ScaledSize = iconSize, Anchor = iconAnchor },
                    Clickable = true,
                    Title     = Guid.NewGuid().ToString(),
                    Visible   = true
                });

                await _markerList.AddMultipleAsync(cordDic);
            }


            foreach (var latLngLiteral in coordinates)
            {
                await bounds.Extend(latLngLiteral);
            }


            await FitBounds();
        }