Completed
Last Updated: 05 Dec 2016 14:03 by ADMIN
ADMIN
Hristo
Created on: 01 Dec 2016 16:28
Category: Map
Type: Bug Report
2
FIX. RadMap - the ElevationRequest, SearchRequest and RouteRequest should work with their UserData property to allow passing of unique data which can be accessed upon completion of the request
In the scenario below one should be able to access the defined UserData value in the SearchCompleted event handler

How to reproduce:
protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            this.radMap1.ShowSearchBar = true;
            BingRestMapProvider bingProvider = this.radMap1.Providers[0] as BingRestMapProvider;
            this.radMap1.MapElement.SearchBarElement.SearchProvider = bingProvider;

            this.radMap1.MapElement.SearchBarElement.SearchProvider.SearchCompleted += BingProvider_SearchCompleted;
        }

        private void BingProvider_SearchCompleted(object sender, SearchCompletedEventArgs e)
        {
            Telerik.WinControls.UI.Map.RectangleG allPoints = new Telerik.WinControls.UI.Map.RectangleG(double.MinValue, double.MaxValue, double.MaxValue, double.MinValue);
            this.radMap1.Layers["Pins"].Clear();
            foreach (Telerik.WinControls.UI.Map.Bing.Location location in e.Locations)
            {
                Telerik.WinControls.UI.Map.PointG point = new Telerik.WinControls.UI.Map.PointG(location.Point.Coordinates[0], location.Point.Coordinates[1]);
                MapPin pin = new MapPin(point);
                pin.Size = new System.Drawing.Size(20, 40);
                pin.BackColor = Color.Red;
                pin.ToolTipText = location.Address.FormattedAddress;
                this.radMap1.MapElement.Layers["Pins"].Add(pin);
                allPoints.North = Math.Max(allPoints.North, point.Latitude);
                allPoints.South = Math.Min(allPoints.South, point.Latitude);
                allPoints.West = Math.Min(allPoints.West, point.Longitude);
                allPoints.East = Math.Max(allPoints.East, point.Longitude);
            }
            if (e.Locations.Length > 0)
            {
                if (e.Locations.Length == 1)
                {
                    this.radMap1.BringIntoView(new Telerik.WinControls.UI.Map.PointG(e.Locations[0].Point.Coordinates[0], e.Locations[0].Point.Coordinates[1]));
                }
                else
                {
                    this.radMap1.MapElement.BringIntoView(allPoints);
                    this.radMap1.Zoom(this.radMap1.MapElement.ZoomLevel - 1);
                }
            }
            else
            {
                RadMessageBox.Show("No result found for the provided search query!");
            }
        }

        Telerik.WinControls.UI.Map.Bing.SearchRequest request;
        private void radButton1_Click(object sender, EventArgs e)
        {
            Telerik.WinControls.UI.MapLayer pinsLayer = new MapLayer("Pins");
            this.radMap1.Layers.Add(pinsLayer);

            request = new SearchRequest();
            request.Query = "San Marino";
            request.SearchOptions.Count = 10;
            request.SearchOptions.QueryParse = true;
            request.UserData = "Tooltip";
            BingRestMapProvider bingProvider = this.radMap1.Providers[0] as BingRestMapProvider;
            bingProvider.SearchAsync(request);
        }

Workaround:  if possible cache the data to be accessed at a later stage
0 comments