I am using the XamGeographicControl. I load a series of about 8000 points and have a DataTrigger to map or hide select points based on a binary flag found in each point.
As i set the flag for points, some of them appear and others do not.
Now, without changing the flags, if i zoom then some points seems to disappear and reappear as i zoom the map.
I am wondering if there is something going on within the control to perhaps optimize the data in some way, that results in this.
For example perhaps if there are two points in the same place, could the points i wish to see but cannot - perhaps they are optimized out - while another point i wish to hide is over top.
It seems random which points are shown. Maybe when points are close together the control drops one?
Hi OttawaDeveloper,
Each series inherits a property called Resolution from the base Series class. http://help.infragistics.com/NetAdvantage/WPF/2013.1/CLR4.0/?page=InfragisticsWPF4.Controls.Charts.XamDataChart.v13.1~Infragistics.Controls.Charts.Series~Resolution.html
You can try setting this to 0 to see if that makes a difference. It may depend on what type of series you are actually using. Can you let me know which series you are using in the XamGeographicMap?
Well i tried that and it seems to be worse - i got nothing.
Why is the documentation for 'resolution' not giving any information about what the numbers mean. All it tells me is that it is a double. It does not give a range or meaning to the numbers here. I tried 1000000 and it seems to be about like it was before.
Still not completely clear how this relates to zoom, but it seems to be working.
GeographicSymbolSeries.MaximumMarkers - apparently this has a default value of 400. Why does the documentation not describe things like default values for properties, min/man and what the values mean.
So now it works but is much slower at loading my data, about 8000 points.
Also looked over CollisionAvoidanceType, MarkerManager.Render(lightweight) - but in the end found nothing helpful there.
When you are fully zoomed out, all 8000 of your points are in view and since the MaximumMarkers property was set to 400, there should only have been 400 markers actually visible. Since there are more points than the number of markers allowed, the series chooses a set of markers it thinks best represents your data. As you zoom in, some of those 8000 points move out of view so the series ends up changing the representative markers around to accomodate the change. This can cause points to appears as though they are disappearing.
Since you changed the MaximumMarkers to 8000 you are now getting a 1 to 1 representation of your data points. As you noticed though, this had an affect on performance in your chart since now there are many more markers being created and rendered. You can try supplying your own MarkerTemplate with a more lightweight marker (fewer visual tree elements) to help improve performance.
1)
http://es.infragistics.com/community/forums/t/70003.aspx Using DataTrigger for seeting GeographicSymbolSeries MarkerTemplate
So i am using code along these lines to selectively display points. If i de-select all points then when i select a single point, it is not displayed. You must hunt around in the 8000 to find one of the 400 lucky ones that get displayed.
2)
Performance of the map has become very very slow to load or refresh with 4000 points.
I tried to put an indicator for the user while data is loading similar to another example. I have not yet found an event i can use to detect when the map is ready to view again so i can disable this indicator.
<Grid x:Name="MapLoadingContainer" Margin="0" Background="White" Canvas.ZIndex="1" Visibility="Collapsed" VerticalAlignment="Stretch"> <Border Background="Transparent" Opacity="0.7" CornerRadius="3" /> <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Orientation="Horizontal"> <TextBlock x:Name="MapLoadingStatus" FontSize="15" HorizontalAlignment="Center" VerticalAlignment="Center" Text="..." /> </StackPanel> </Grid>
3)
As far as the marker template i was using this all along. If you know of a more 'lightweight' marker that would be good to know.
<Ellipse Width="5" Height="5" Fill="{StaticResource StandardBackground}" Stroke="{StaticResource StandardStroke}" StrokeThickness="0.5" />
3) This simplification has resulted in significant improvement.
<Rectangle Width="4" Height="4" Fill="Blue"/>
Would still like to figure out a way to detect when the map has finished loading these points to display a 'loading' indicator for the user. Examples i have found relate to shapefiles and do not apply to what i am doing here.
Hi,
3.) I'm glad simplifying the marker template as resulted in better performance for you.
2.) I've attached a sample that demonstrates a method for determining when the series has finished loading. There are no events that directly do this so this should be used as a workaround. Built-in events for this would be a new product idea. You can suggest new product ideas for future versions (or vote for existing ones) at http://ideas.infragistics.com.
There are many benefits to submitting a product idea:
- Direct communication with our product management team regarding your product idea.
- Notifications whenever new information regarding your idea becomes available.
- Ability to vote on your favorite product ideas to let us know which ones are the most important to you. You will have ten votes for this and can change which ideas you are voting for at any time.
- Allow you to shape the future of our products by requesting new controls and products altogether.
- You and other developers can discuss existing product ideas with members of our Product Management team.
Let me know if you have any questions on this.
Hello,
Please let us know if you need further assistance on this matter.
Sincerely,
Valerie
Developer Support Supervisor - XAML
Infragistics
www.infragistics.com/support
I'm just following up as it has been 2 weeks. Do you still need assitance on this issue?
Thanks for letting me know. I will follow up with you in two weeks to see if you are available.
Thanks, got bumped onto another priority for a short time, will come back to this.
Here is an updated sample for VS2010.