public void RemoveChild(MarkerWrapper marker)
        {
            for (int i = 0; i < count; i++)
            {
                if (childs[i] == marker)
                {
                    for (int j = i; j < count - 1; j++)
                    {
                        childs[j] = childs[j + 1];
                    }
                    count--;
                    totalCount--;

                    Cluster p = parent;
                    while (p != null)
                    {
                        p.totalCount--;
                        p.Update();
                        p = p.parent;
                    }

                    childs[count] = null;
                    if (count == 1 && parent != null)
                    {
                        if (childs[0] is MarkerWrapper)
                        {
                            parent.Replace(this, childs[0] as MarkerWrapper);
                            Dispose();
                        }
                    }
                    break;
                }
            }
        }
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            SetContentView(Resource.Layout.SecondView);

            var viewModel = (SecondViewModel) ViewModel;

            var mapFragment = (SupportMapFragment)SupportFragmentManager.FindFragmentById(Resource.Id.map);

            var options = new MarkerOptions();
            options.SetPosition(new LatLng(viewModel.Han.Location.Lat, viewModel.Han.Location.Lng));
            options.SetTitle("Han");
            options.Draggable(true);
            var hanMarker = mapFragment.Map.AddMarker(options);

            _han = new MarkerWrapper(hanMarker);

            mapFragment.Map.MarkerDragEnd += (sender, args) =>
                {
                    _han.FirePositionChangedFromMap();
                };

            var set = this.CreateBindingSet<SecondView, SecondViewModel>();
            set.Bind(_han)
               .For(m => m.Position)
               .To(vm => vm.Han.Location)
               .WithConversion(new LocationToLatLngValueConverter(), null);
            set.Apply();

        }
        public ClusterItem Add(MarkerWrapper marker)
        {
            totalCount++;
            if (zoom < instance.clusterToZoom)
            {
                int mx, my;
                int z = zoom + 1;
                marker.GetTilePosition(z, out mx, out my);
                for (int i = 0; i < count; i++)
                {
                    ClusterItem item = childs[i];
                    if (item.CompareTiles(z, mx, my))
                    {
                        if (item is Cluster)
                        {
                            (item as Cluster).Add(marker);
                        }
                        else
                        {
                            Cluster c = new Cluster(z, item as MarkerWrapper, marker)
                            {
                                parent = this
                            };
                            childs[i] = c;
                        }
                        return(item);
                    }
                }
            }

            AddChild(marker);
            return(this);
        }
        public Cluster(int zoom, MarkerWrapper marker1, MarkerWrapper marker2) : this(zoom)
        {
            totalCount = 2;
            marker1.GetTilePosition(zoom, out tileX, out tileY);
            projection.TileToCoordinates(tileX + 0.5, tileY + 0.5, zoom, out longitude, out latitude);

            if (zoom < instance.clusterToZoom)
            {
                int mx1, my1, mx2, my2;
                marker1.GetTilePosition(zoom + 1, out mx1, out my1);
                marker2.GetTilePosition(zoom + 1, out mx2, out my2);

                if (mx1 == mx2 && my1 == my2)
                {
                    AddChild(new Cluster(zoom + 1, marker1, marker2));
                }
                else
                {
                    AddChild(marker1);
                    AddChild(marker2);
                }
            }
            else
            {
                AddChild(marker1);
                AddChild(marker2);
            }
        }
Exemplo n.º 5
0
        public void OnMapReady(GoogleMap map)
        {
            _map = map;
            _map.UiSettings.ZoomControlsEnabled = true;
            _map.UiSettings.CompassEnabled      = true;
            _map.UiSettings.SetAllGesturesEnabled(true);

            LatLng        position = new LatLng(48.8833, 2.4667);
            MarkerOptions options  = new MarkerOptions();

            options.Draggable(true);
            options.SetTitle("Ma position");
            options.SetPosition(position);
            _marker = new MarkerWrapper(_map.AddMarker(options));
            _map.AnimateCamera(CameraUpdateFactory.NewLatLngZoom(position, 15));

            _map.MarkerDrag += (sender, args) =>
            {
                _marker.FirePositionChanged();
            };

            var set = this.CreateBindingSet <MapView, MapViewModel>();

            set.Bind(_marker).For(m => m.Position).To(vm => vm.Location).WithConversion(new LocationToLatLngConverter(), null).TwoWay();
            set.Apply();
        }
Exemplo n.º 6
0
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            SetContentView(Resource.Layout.SecondView);

            var viewModel = (SecondViewModel)ViewModel;

            var mapFragment = (SupportMapFragment)SupportFragmentManager.FindFragmentById(Resource.Id.map);

            var options = new MarkerOptions();

            options.SetPosition(new LatLng(viewModel.Han.Location.Lat, viewModel.Han.Location.Lng));
            options.SetTitle("Han");
            options.Draggable(true);
            var hanMarker = mapFragment.Map.AddMarker(options);

            _han = new MarkerWrapper(hanMarker);

            mapFragment.Map.MarkerDragEnd += (sender, args) =>
            {
                _han.FirePositionChangedFromMap();
            };

            var set = this.CreateBindingSet <SecondView, SecondViewModel>();

            set.Bind(_han)
            .For(m => m.Position)
            .To(vm => vm.Han.Location)
            .WithConversion(new LocationToLatLngValueConverter(), null);
            set.Apply();
        }
Exemplo n.º 7
0
    // Start is called before the first frame update
    void Start()
    {
        var FPALeft  = GameObject.Find("FPALeft");
        var FPARight = GameObject.Find("FPARight");

        _enginePowerOutputLeft  = new MarkerWrapper(FPALeft, LightMat, DarkMat);
        _enginePowerOutputRight = new MarkerWrapper(FPARight, LightMat, DarkMat);
    }
 private void Replace(Cluster item1, MarkerWrapper item2)
 {
     if (count > 1)
     {
         for (int i = 0; i < count; i++)
         {
             if (childs[i] == item1)
             {
                 childs[i]    = item2;
                 item2.parent = this;
                 break;
             }
         }
     }
     else
     {
         parent.Replace(this, item2);
         Dispose();
     }
 }
        public MarkerWrapper FindMarkerWrapper(OnlineMapsMarker marker)
        {
            for (int i = 0; i < count; i++)
            {
                ClusterItem item = childs[i];
                if (item is Cluster)
                {
                    MarkerWrapper wrapper = (item as Cluster).FindMarkerWrapper(marker);
                    if (wrapper != null)
                    {
                        return(wrapper);
                    }
                }
                else if (item.markerRef == marker)
                {
                    return(item as MarkerWrapper);
                }
            }

            return(null);
        }