public GMap.NET.Point[] GetPointsForTile(int x, int y, Bitmap dot, int zoom, IEnumerable <PointLatLng> _points) { List <GMap.NET.Point> points = new List <GMap.NET.Point>(); GMap.NET.Size maxTileSize; GMap.NET.Point adjustedPoint; GMap.NET.Point pixelCoordinate; GMap.NET.Point mapPoint; maxTileSize = _projection.GetTileMatrixMaxXY(zoom); //Top Left Bounds GMap.NET.Point tlb = _projection.FromTileXYToPixel(new GMap.NET.Point(x, y)); maxTileSize = new GMap.NET.Size(SIZE, SIZE); //Lower right bounds GMap.NET.Point lrb = new GMap.NET.Point((tlb.X + maxTileSize.Width) + dot.Width, (tlb.Y + maxTileSize.Height) + dot.Width); //pad the Top left bounds tlb = new GMap.NET.Point(tlb.X - dot.Width, tlb.Y - dot.Height); //Go throught the list and convert the points to pixel cooridents foreach (GMap.NET.PointLatLng llPoint in GetList(tlb, lrb, zoom, _points)) { //Now go through the list and turn it into pixel points pixelCoordinate = _projection.FromLatLngToPixel(llPoint.Lat, llPoint.Lng, zoom); //Make sure the weight and data is still pointing after the conversion pixelCoordinate.Data = llPoint.Data; pixelCoordinate.Weight = llPoint.Weight; mapPoint = _projection.FromPixelToTileXY(pixelCoordinate); mapPoint.Data = pixelCoordinate.Data; //Adjust the point to the specific tile adjustedPoint = AdjustMapPixelsToTilePixels(new GMap.NET.Point(x, y), pixelCoordinate); //Make sure the weight and data is still pointing after the conversion adjustedPoint.Data = pixelCoordinate.Data; adjustedPoint.Weight = pixelCoordinate.Weight; //Add the point to the list points.Add(adjustedPoint); } return(points.ToArray()); }