예제 #1
0
        internal override void Register(GoogleMap oldNativeMap, Map oldMap, GoogleMap newNativeMap, Map newMap)
        {
            base.Register(oldNativeMap, oldMap, newNativeMap, newMap);

            clusterManager = new ClusterManager(context, NativeMap)
            {
                Algorithm = GetClusterAlgorithm()
            };
            clusterHandler = new ClusterLogicHandler(ClusteredMap, clusterManager, this);

            if (newNativeMap == null)
            {
                return;
            }
            ClusteredMap.OnCluster = HandleClusterRequest;

            NativeMap.CameraIdle += NativeMapOnCameraIdle;
            NativeMap.SetOnMarkerClickListener(clusterManager);
            NativeMap.SetOnInfoWindowClickListener(clusterManager);
            newNativeMap.MarkerDragStart += OnMarkerDragStart;
            newNativeMap.MarkerDragEnd   += OnMarkerDragEnd;
            newNativeMap.MarkerDrag      += OnMarkerDrag;

            clusterRenderer = new ClusterRenderer(context,
                                                  ClusteredMap,
                                                  NativeMap,
                                                  clusterManager);
            clusterManager.Renderer = clusterRenderer;

            clusterManager.SetOnClusterClickListener(clusterHandler);
            clusterManager.SetOnClusterInfoWindowClickListener(clusterHandler);
            clusterManager.SetOnClusterItemClickListener(clusterHandler);
            clusterManager.SetOnClusterItemInfoWindowClickListener(clusterHandler);
        }
        protected override void OnMapReady(GoogleMap map)
        {
            base.OnMapReady(map);

            NativeMap.MyLocationChange += NativeMapOnMyLocationChange;
            NativeMap.SetOnMarkerClickListener(this);
        }
예제 #3
0
        public override void Register(Android.Gms.Maps.GoogleMap oldNativeMap, Map oldMap, Android.Gms.Maps.GoogleMap newNativeMap, Map newMap)
        {
            base.Register(oldNativeMap, oldMap, newNativeMap, newMap);

            clusterManager = new ClusterManager(context, NativeMap)
            {
                Algorithm = GetClusterAlgorithm()
            };
            clusterHandler = new ClusterLogicHandler(Map, clusterManager, this);

            if (newNativeMap == null)
            {
                return;
            }

            ClusteredMap.OnCluster = HandleClusterRequest;

            NativeMap.CameraIdle += NativeMapOnCameraIdle;
            NativeMap.SetOnMarkerClickListener(clusterManager);
            NativeMap.SetOnInfoWindowClickListener(clusterManager);

            clusterRenderer         = new ClusterRenderer(context, ClusteredMap, NativeMap, clusterManager);
            clusterManager.Renderer = clusterRenderer;

            clusterManager.SetOnClusterClickListener(clusterHandler);
            clusterManager.SetOnClusterInfoWindowClickListener(clusterHandler);
            clusterManager.SetOnClusterItemClickListener(clusterHandler);
            clusterManager.SetOnClusterItemInfoWindowClickListener(clusterHandler);
        }
예제 #4
0
        public override void Unregister(Android.Gms.Maps.GoogleMap nativeMap, Map map)
        {
            if (nativeMap != null)
            {
                NativeMap.CameraIdle -= NativeMapOnCameraIdle;
                NativeMap.SetOnMarkerClickListener(null);
                NativeMap.SetOnInfoWindowClickListener(null);

                clusterHandler.Dispose();
                clusterManager.Dispose();
            }

            base.Unregister(nativeMap, map);
        }
예제 #5
0
        internal override void Unregister(GoogleMap nativeMap, Map map)
        {
            if (nativeMap != null)
            {
                NativeMap.CameraIdle -= NativeMapOnCameraIdle;
                NativeMap.SetOnMarkerClickListener(null);
                NativeMap.SetOnInfoWindowClickListener(null);
                nativeMap.MarkerDrag      -= OnMarkerDrag;
                nativeMap.MarkerDragEnd   -= OnMarkerDragEnd;
                nativeMap.MarkerDragStart -= OnMarkerDragStart;

                clusterHandler.Dispose();
                clusterManager.Dispose();
            }

            base.Unregister(nativeMap, map);
        }
        protected override void OnElementChanged(ElementChangedEventArgs <Map> args)
        {
            SKMap oldMap = args.OldElement as SKMap;
            SKMap newMap = args.NewElement as SKMap;

            if (oldMap != null)
            {
                if (oldMap.MapOverlays != null)
                {
                    oldMap.MapOverlays.CollectionChanged -= MapOverlaysCollectionChanged;
                }

                if (oldMap.Pins as ObservableCollection <Pin> != null)
                {
                    ((ObservableCollection <Pin>)oldMap.Pins).CollectionChanged -= PinsCollectionChanged;
                }

                NativeMap?.SetOnMarkerClickListener(null);

                UnregisterPinCallbacks(oldMap.Pins);
            }

            base.OnElementChanged(args);

            if (newMap != null)
            {
                if (newMap.MapOverlays != null)
                {
                    newMap.MapOverlays.CollectionChanged += MapOverlaysCollectionChanged;
                }

                if (newMap.Pins as ObservableCollection <Pin> != null)
                {
                    ((ObservableCollection <Pin>)newMap.Pins).CollectionChanged += PinsCollectionChanged;
                }

                RegisterPinCallbacks(newMap.Pins);
            }
        }