This is a migrated thread and some comments may be shown as answers.

How do I generate a heat map for the world based on my data

2 Answers 74 Views
Map
This is a migrated thread and some comments may be shown as answers.
Kevin
Top achievements
Rank 1
Kevin asked on 28 Apr 2011, 01:27 AM
The example code uses a generated dbf file, but I need to get data at runtime based, for example "hugs per captia".

I get NaN in the legend when I tried the following code:

public partial class Example : UserControl
    {
        private bool initialized;
        private const string NonDbfDataField = "HugsPerCapita";
  
        public Example()
        {
            InitializeComponent();
            this.RadMap1.InitializeCompleted += new EventHandler(RadMap1_InitializeCompleted);
        }
  
        void RadMap1_InitializeCompleted(object sender, EventArgs e)
        {
            if (!this.initialized)
            {
                this.initialized = true;
                this.InformationLayer.Reader.PreviewReadCompleted += new PreviewReadShapesCompletedEventHandler(Reader_PreviewReadCompleted);
            }
        }
  
        private void Reader_PreviewReadCompleted(object sender, PreviewReadShapesCompletedEventArgs eventArgs)
        {
            if (eventArgs.Error == null)
            {
                foreach (MapShape shape in eventArgs.Items)
                {
                    this.SetAdditionalData(shape);
                }
            }
        }
  
        private void SetAdditionalData(MapShape shape)
        {
            ExtendedData extendedData = shape.ExtendedData;
            if (extendedData != null)
            {
                // add new property to ExtendedData  
                if (!extendedData.PropertySet.ContainsKey(NonDbfDataField))
                {
                    extendedData.PropertySet.RegisterProperty(NonDbfDataField, "", typeof(int), 0);
                }
  
                string country = (string)shape.ExtendedData.GetValue("ISO_2DIGIT");
                int additionalFieldValue = this.GetHugsByCountry(country);
  
                // assign value to new property  
                shape.ExtendedData.SetValue(NonDbfDataField, additionalFieldValue);
                  
            }
        }
  
        private int GetHugsByCountry(string stateName)
        {
            return 43 ; 
        }  
  
          
  
    }

2 Answers, 1 is accepted

Sort by
0
Kevin
Top achievements
Rank 1
answered on 29 Apr 2011, 04:50 PM
Sorry,  wrong forum.  Admins please lock or delete.  Re-posted in Silverlight -> Map
0
Andrey
Telerik team
answered on 02 May 2011, 07:22 AM
Hello Kevin,

You didn't provide your XAML, but as I can suppose looking into your code you specify source to the reader in XAML. If it is so, then reader will start (and actually finish) reading of the shape file BEFORE you assign event handler to the PreviewReadCompleted event. It occurs when WPF process XAML and set Source property to reader. As result your application never come into it. You should assign event handler in XAML or initialize reader in the code completely.

Solution for XAML:

<telerik:InformationLayer.Reader>
    <telerik:MapShapeReader Source="/ExtendedData;component/world.shp" PreviewReadCompleted="MapPreviewReadCompleted" />
</telerik:InformationLayer.Reader>

Solution for code behind:

public MainWindow()
{
    InitializeComponent();
    MapShapeReader reader = new MapShapeReader();
    reader.PreviewReadCompleted += new PreviewReadShapesCompletedEventHandler(this.MapPreviewReadCompleted);
    this.informationLayer.Reader = reader;
    this.radMap.InitializeCompleted += new EventHandler(radMap_InitializeCompleted);
}
private void radMap_InitializeCompleted(object sender, EventArgs e)
{
    this.informationLayer.Reader.Source = new Uri("/ExtendedData;component/world.shp", UriKind.RelativeOrAbsolute);
}


Greetings,
Andrey Murzov
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
Tags
Map
Asked by
Kevin
Top achievements
Rank 1
Answers by
Kevin
Top achievements
Rank 1
Andrey
Telerik team
Share this question
or