コード例 #1
0
        void map_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            PointLatLng point = BingMapTileSystem.PixelXYToLatLong(map.ClickPosition.Position, map.ClickPosition.Level);

            //collector.Add(point.Lng, point.Lat);
            stopcollectorlayer.SetTempPoint(point);
        }
コード例 #2
0
ファイル: TileFileCache.cs プロジェクト: hanzhou/ZenithMap
        public bool PutTileToCache(RawTile key, MemoryStream data)
        {
            string quadkey = BingMapTileSystem.TileXYToQuadKey(key.TileXY, key.Level);

            if (QuadKeyList.Contains(quadkey))
            {
                return(false);
            }
            string     path = string.Format("{0}/{1}.png", directory, quadkey);
            FileStream fs   = File.OpenWrite(path);

            data.CopyTo(fs);
            fs.Flush();
            fs.Close();
            QuadKeyList.Add(quadkey);
            infofile.Element("TileSet").Add(new XElement("Tile")
            {
                Value = quadkey
            });

            try
            {
                using (FileStream fsInfo = File.OpenWrite(infoFilePath))
                {
                    infofile.Save(fsInfo);
                }
            }
            catch (Exception e)
            {
                //Debug.WriteLine("Error in PutTileToCache: " + e.ToString());
            }

            return(true);
        }
コード例 #3
0
        public MainWindow()
        {
            InitializeComponent();

            int Binglevel = 16;

            map.InitMap(new BingMapTileLayer(new BingMapTileLoadProxy(AccessMode.All)
            {
                DBCache = new TileFileCache()
            }));
            map.Config(new MapLayerConfig(1, 17, Constants.MinZoomRate, Constants.MaxZoomRate, MapType.BingMapChinese));
            map.GotoPosition(BingMapTileSystem.LatLngToPixelXY(new PointLatLng(114.3961, 30.6254), Binglevel), Binglevel);
            map.AddLayer(new FpsCounterLayer());
            //map.AddLayer(new MouseMoveTestLayer());
            //map.AddLayer(new UIElementLayer(map));
            //map.AddMapLayer(new MovingObjectLayer());

            //int GNGlevel = 0;
            //SingleMapTransformSystem.Init(new SizeInt(800, 600), new SizeD(240, 180));
            //map.InitMap(new ImageMapLayer(map));
            //MapLayerConfig config = MapLayerConfig.DefaultConfig;
            //config.MapType = MapType.SingleImageMap;
            //map.Config(config);
            //map.GotoPosition(SingleMapTransformSystem.ModelXYToPixelXY(new PointLatLng(120, 90)), GNGlevel);
            //map.AddLayer(new FpsCounterLayer());

            SetBindings();
        }
コード例 #4
0
 public override void Draw(DrawingContext drawingContext, MapArea viewarea, double zoomRate)
 {
     foreach (ControlElement element in controlItems)
     {
         PointInt pos = BingMapTileSystem.LatLngToPixelXY(element.Location, viewarea.Level);
         Canvas.SetLeft(element, (pos.X - viewarea.Area.X) * zoomRate);
         Canvas.SetTop(element, (pos.Y - viewarea.Area.Y) * zoomRate);
     }
     base.Draw(drawingContext, viewarea, zoomRate);
 }
コード例 #5
0
        public override void Draw(DrawingContext drawingContext, MapArea viewarea, double zoomRate)
        {
            PointInt p1   = BingMapTileSystem.LatLngToPixelXY(pos1, viewarea.Level);
            PointInt p2   = BingMapTileSystem.LatLngToPixelXY(pos2, viewarea.Level);
            RectInt  rect = RectInt.FromLTRB(p1.X, p1.Y, p2.X, p2.Y);

            drawingContext.DrawRectangle(Brushes.Blue, new Pen(),
                                         new System.Windows.Rect((rect.X - viewarea.Area.X) * zoomRate, (rect.Y - viewarea.Area.Y) * zoomRate, rect.Width * zoomRate, rect.Height * zoomRate));
            base.Draw(drawingContext, viewarea, zoomRate);
        }
コード例 #6
0
        public override void Draw(DrawingContext drawingContext, MapArea viewarea, double zoomRate)
        {
            List <PointInt> positions = collector.ToList().ConvertAll <PointInt>(
                new Converter <PointLatLng, PointInt>(ptll => { return(BingMapTileSystem.LatLngToPixelXY(ptll, MapCore.Level)); }));

            foreach (PointInt pt in positions)
            {
                drawingContext.DrawEllipse(Brushes.Black, new Pen(),
                                           new Point((pt.X - viewarea.Area.X) * zoomRate, (pt.Y - viewarea.Area.Y) * zoomRate), radius, radius);
            }
            base.Draw(drawingContext, viewarea, zoomRate);
        }
コード例 #7
0
 public override void Draw(DrawingContext drawingContext, MapArea viewarea, double zoomRate)
 {
     for (int i = 0; i < busNum; i++)
     {
         PointInt point;
         int      x, y;
         BingMapTileSystem.LatLngToPixelXY(tempLocations[i].Lng, tempLocations[i].Lat, viewarea.Level, out x, out y);
         point = new PointInt(x, y);
         Point viewpoint = new Point((point.X - viewarea.Area.X) * zoomRate, (point.Y - viewarea.Area.Y) * zoomRate);
         drawingContext.DrawImage(bus, new Rect(viewpoint.X - 5, viewpoint.Y - 5, 20, 20));
     }
     base.Draw(drawingContext, viewarea, zoomRate);
 }
コード例 #8
0
ファイル: TileFileCache.cs プロジェクト: hanzhou/ZenithMap
        public MemoryStream GetTileFromCache(RawTile key)
        {
            string quadkey = BingMapTileSystem.TileXYToQuadKey(key.TileXY, key.Level);

            if (!QuadKeyList.Contains(quadkey))
            {
                return(null);
            }
            string       path = string.Format("{0}/{1}.png", directory, quadkey);
            FileStream   fs   = File.OpenRead(path);
            MemoryStream ms   = new MemoryStream();

            fs.CopyTo(ms);
            fs.Dispose();
            fs.Close();
            return(ms);
        }
コード例 #9
0
        public override void Draw(DrawingContext drawingContext, MapArea viewarea, double zoomRate)
        {
            int height = viewarea.Area.Height;
            int width  = viewarea.Area.Width;

            if (height == 0 || width == 0)
            {
                return;
            }
            if (MapCore.IsDragging)
            {
                return;
            }
            positions = collector.ToList().ConvertAll <PointInt>(
                new Converter <PointLatLng, PointInt>(ptll => { return(BingMapTileSystem.LatLngToPixelXY(ptll, MapCore.Level)); }));

            DrawingVisual  visual = new DrawingVisual();
            DrawingContext dc     = visual.RenderOpen();

            for (int i = 0; i < positions.Count; i++)
            {
                dc.DrawEllipse(HeatMapHelper.CreateBrush((byte)Density, GradientStop), null,
                               new Point(positions[i].X - viewarea.Area.X, positions[i].Y - viewarea.Area.Y), CircleRadius, CircleRadius);
            }
            dc.Close();
            RenderTargetBitmap rtb = new RenderTargetBitmap(width, height, 96, 96, PixelFormats.Pbgra32);

            rtb.Render(visual);
            WriteableBitmap bmp = new WriteableBitmap(rtb);

            bmp.Lock();
            for (int i = 0; i < bmp.PixelHeight; i++)
            {
                for (int j = 0; j < bmp.PixelWidth; j++)
                {
                    bmp.SetPixelWithoutLock(i, j, palette);
                }
            }
            bmp.AddDirtyRect(new Int32Rect(0, 0, bmp.PixelWidth, bmp.PixelHeight));
            bmp.Unlock();
            image.Source = bmp;

            image.Width  = viewarea.Area.Width * zoomRate;
            image.Height = viewarea.Area.Height * zoomRate;
            base.Draw(drawingContext, viewarea, zoomRate);
        }
コード例 #10
0
        public override void Draw(DrawingContext drawingContext, MapArea viewarea, double zoomRate)
        {
            List <PointInt> positions = collector.ToList().ConvertAll <PointInt>(
                new Converter <PointLatLng, PointInt>(ptll => { return(BingMapTileSystem.LatLngToPixelXY(ptll, MapCore.Level)); }));

            for (int i = 0; i < positions.Count; i++)
            {
                drawingContext.DrawEllipse(Brushes.Black, new Pen(),
                                           new Point((positions[i].X - viewarea.Area.X) * zoomRate, (positions[i].Y - viewarea.Area.Y) * zoomRate), radius, radius);
                if (i == 0)
                {
                    continue;
                }
                drawingContext.DrawLine(new Pen(Brushes.Blue, 2),
                                        new Point((positions[i - 1].X - viewarea.Area.X) * zoomRate, (positions[i - 1].Y - viewarea.Area.Y) * zoomRate),
                                        new Point((positions[i].X - viewarea.Area.X) * zoomRate, (positions[i].Y - viewarea.Area.Y) * zoomRate));
            }
            base.Draw(drawingContext, viewarea, zoomRate);
        }
コード例 #11
0
        public MainWindow()
        {
            InitializeComponent();

            int Binglevel = 16;

            map.InitMap(new BingMapTileLayer(new BingMapTileLoadProxy(AccessMode.MemoryandServer)));
            map.Config(new MapLayerConfig(1, 17, Constants.MinZoomRate, Constants.MaxZoomRate, MapType.BingMapChinese));
            map.GotoPosition(BingMapTileSystem.LatLngToPixelXY(new PointLatLng(114.3961, 30.6254), Binglevel), Binglevel);
            //map.AddMapLayer(new HeatPointCollectorMapLayer(map, collector));
            //map.AddLayer(new PointCollectorLayer(collector));
            //map.AddLayer(new PolyLineCollectorLayer(collector));
            stopcollectorlayer = new BusStopCollectLayer();
            map.AddLayer(stopcollectorlayer);

            map.MouseLeftButtonDown += new MouseButtonEventHandler(map_MouseLeftButtonDown);
            this.KeyDown            += new KeyEventHandler(MainWindow_KeyDown);
            savePointBtn.Click      += new RoutedEventHandler(savePointBtn_Click);
        }
コード例 #12
0
        public override bool HitTest(MapLocation pos, InputEventType inputtype)
        {
            PointInt p1 = BingMapTileSystem.LatLngToPixelXY(pos1, pos.Level);
            PointInt p2 = BingMapTileSystem.LatLngToPixelXY(pos2, pos.Level);

            switch (inputtype)
            {
            case InputEventType.MouseMove:
                RectInt rect = RectInt.FromLTRB(p1.X, p1.Y, p2.X, p2.Y);
                if (rect.Contains(pos.Position))
                {
                    OnMouseMoveOn();
                    return(true);
                }
                OnMouseMoveNotOn();
                return(false);
            }
            return(false);
        }
コード例 #13
0
        private Point LocationToWindow(PointLatLng position, MapArea viewarea, double zoomrate)
        {
            PointInt pt = BingMapTileSystem.LatLngToPixelXY(position, viewarea.Level);

            return(new Point((pt.X - viewarea.Area.X) * zoomrate, (pt.Y - viewarea.Area.Y) * zoomrate));
        }